You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

指定dtype时pandas read_csv的on_bad_lines="skip"不生效,是否为预期行为?

pandas中指定dtype时on_bad_lines="skip"失效是否属于预期情况?

这属于预期行为,在pandas 1.5.1版本中,on_bad_lines="skip"的作用范围仅限列数不匹配的行,类型转换失败并不属于它的处理范畴。

当你通过dtype={"qty":"int64"}强制指定列类型时,pandas会直接尝试将该列所有值转换为int64类型,遇到"na"这类无法转换的内容时,会触发类型转换错误,而非触发on_bad_lines的跳过逻辑。

解决方法

如果需要跳过类型转换失败的行,可以采用以下两种思路:

方法1:先识别缺失值再处理类型

# 先把"na"识别为缺失值,再转换类型并删除缺失行
df = pd.read_csv("abc.txt", na_values=["na"])
df = df.dropna(subset=["qty"]).astype({"qty": "int64"})

方法2:用自定义转换函数处理

def convert_qty(val):
    try:
        return int(val)
    except ValueError:
        return pd.NA

# 自定义转换后删除含缺失值的行
df = pd.read_csv("abc.txt", converters={"qty": convert_qty}).dropna(subset=["qty"])

内容的提问来源于stack exchange,提问作者fivelements

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:50:43