升级至Pandas 2.0.3后drop函数报错的问题求助
Pandas 2.0.3升级后drop函数报错的解决办法
报错原因
Pandas 2.0及以上版本对drop()函数的参数做了调整,不再允许通过位置参数传递axis参数(原来的1代表axis=1,即针对列操作),必须显式使用关键字参数指定,否则就会触发"传递了过多位置参数"的报错。
代码修改方案
方案1:显式指定axis=1
把原来的位置参数1改成关键字参数axis=1,两种写法都适用:
# 带inplace的写法 some_race.drop(some_race.columns.difference( ['nr_zwierz', 'rasa', 'blup_zwh', 'h_pd', 'przyrost', 'h_pm', 'proc_mies', 's1', 's2']), axis=1, inplace=True) # 不带inplace的写法 some_race = some_race.drop(some_race.columns.difference( ['nr_zwierz', 'rasa', 'blup_zwh', 'h_pd', 'przyrost', 'h_pm', 'proc_mies', 's1', 's2']), axis=1)
方案2:直接使用columns参数(更直观)
因为是针对列操作,直接用columns参数指定要删除的列集合,不需要额外写axis=1,代码可读性更强:
# 带inplace的写法 some_race.drop(columns=some_race.columns.difference( ['nr_zwierz', 'rasa', 'blup_zwh', 'h_pd', 'przyrost', 'h_pm', 'proc_mies', 's1', 's2']), inplace=True) # 不带inplace的写法 some_race = some_race.drop(columns=some_race.columns.difference( ['nr_zwierz', 'rasa', 'blup_zwh', 'h_pd', 'przyrost', 'h_pm', 'proc_mies', 's1', 's2']))
回退旧版本的方法
如果不想修改代码,可回退到兼容旧写法的Pandas 1.x系列最新稳定版(比如1.5.3),执行以下命令:
pip install pandas==1.5.3
这个版本完全支持原来的位置参数写法,无需改动代码。
内容的提问来源于stack exchange,提问作者mlodycezar
相关产品推荐
相关产品推荐

