Pandas使用on_bad_lines参数时触发ValueError的问题排查与修复
Pandas使用on_bad_lines参数时触发ValueError的问题排查与修复
这个报错的核心原因几乎可以确定是你的Pandas版本低于1.4.0——尽管你提到on_bad_lines的函数选项是1.4.0及以上才支持的,但你的运行环境里的Pandas版本大概率没达到这个要求。
在Pandas 1.4.0之前,on_bad_lines参数只接受字符串取值(可选'skip'、'warn'、'error'),不支持传入自定义函数,所以当你传入handle_bad_line这样的函数时,就会触发ValueError。
排查与修复步骤:
检查当前Pandas版本
先运行以下代码确认你的Pandas版本:import pandas as pd print(pd.__version__)如果输出的版本号小于
1.4.0,就坐实了版本问题。升级Pandas到符合要求的版本
根据你的包管理工具,执行对应的升级命令:- 使用pip升级:
pip install --upgrade pandas - 使用conda升级(如果你用Anaconda/Miniconda环境):
conda update pandas
- 使用pip升级:
验证修复效果
升级完成后,重新运行你原来的代码:import pandas as pd def handle_bad_line(bad_line: list[str]) -> list[str] | None: # Do something with the bad line, e.g., print it or modify it print("Bad line:", bad_line) # Return a modified line (if needed) or None to skip it return None # Skip the bad line df = pd.read_csv("DataFile.csv", engine="python", on_bad_lines=handle_bad_line)此时
on_bad_lines应该能正常识别你的自定义处理函数,不会再触发报错。
补充说明
正如你引用的官方文档所述,自定义函数作为on_bad_lines参数的用法仅在Pandas 1.4.0+且使用engine='python'时才支持,所以确保版本达标是解决这个问题的关键。
备注:内容来源于stack exchange,提问作者nam
相关产品推荐
相关产品推荐

