升级Pandas到0.25.0后调用read_csv报max_rows参数错误如何解决
Pandas 0.25.0 版本 read_csv 报 max_rows 参数错误解决方案
问题复现
你通过如下命令将 Pandas 升级到 0.25.0 版本:
pip install --upgrade pandas==0.25.0
升级后执行读取csv的代码:
df_complete=pd.read_csv('tmdb-movies.csv')
触发报错,原始报错信息为 TypeError: __init__() got an unexpected keyword argument 'max_rows',中文翻译为:类型错误:__init__() 接收到了未预期的关键字参数 max_rows
结论
不需要重新安装 Pandas,该报错为版本间参数规则变更导致的兼容问题,和Pandas包的安装完整性无关。
问题原因
Pandas 从0.25.0版本开始正式移除了此前作为废弃别名存在的max_rows读取参数,统一使用nrows作为限制读取行数的入参。你在代码中没有显式传入max_rows,大概率是当前Jupyter Notebook的全局配置、或者提前导入的第三方工具库隐式给read_csv方法注入了这个已废弃的参数。
最简解决方法
按使用优先级排序:
- 最低修改成本方案:直接在调用
read_csv时显式传入nrows参数覆盖隐式配置即可,不影响原有读取逻辑:# nrows=None 为默认值,代表读取全部行 df_complete=pd.read_csv('tmdb-movies.csv', nrows=None) - 全局生效方案:打开Jupyter对应的IPython配置文件(默认路径为
~/.ipython/profile_default/ipython_config.py),找到给pandas.read_csv设置默认入参的配置项,将其中的max_rows字段替换为nrows即可,后续所有read_csv调用无需额外修改。 - 第三方依赖兼容方案:如果是引入的第三方工具库隐式传入了废弃参数,可以在导入Pandas后添加一行兼容代码,自动过滤无效的
max_rows参数:import pandas as pd # 兼容代码 original_read_csv = pd.read_csv pd.read_csv = lambda *args, **kwargs: original_read_csv(*args, **{k:v for k,v in kwargs.items() if k != 'max_rows'})
内容的提问来源于stack exchange,提问作者Seif Ahmed
相关产品推荐
相关产品推荐

