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

Pandas批量转换浮点列为整数时遇NaN/inf错误的问题

问题分析与修复方案

嘿,我一眼就揪出问题所在啦!你的代码里判断列是否无NaN的逻辑搞反了,这才导致转int时遇到NaN报错。

错误根源

你用了floats.notna().any(),这个方法的含义是:列中至少有一个值不是NaN——哪怕列里还有大量NaN,只要有一个有效值,它就会返回True。所以你的notna变量其实包含了那些部分值是NaN的列,当你尝试把这些列转成int时,自然会因为存在NaN而触发错误。

你真正需要的是floats.notna().all(),这个方法会严格检查列中所有值都不是NaN,只有完全没有NaN的列才会被选中。

修正后的代码

chunk_iter = pd.read_csv(source, chunksize=3000)
for chunk in chunk_iter:
    floats = chunk.select_dtypes(include=['floating'], exclude=None)  # 筛选所有浮点类型列
    # 改用all():只保留所有值都非NaN的浮点列
    notna_cols = floats.columns[floats.notna().all()].tolist()  
    floats[notna_cols] = floats[notna_cols].astype(int)
    print(f'已将这些列转为整数:{notna_cols}')

额外小提示

如果有些浮点列里有NaN,但你还是想把有效值转成int(比如先处理缺失值),可以先填充NaN再转换,举个例子:

# 示例:用0填充NaN后转int,也可以根据业务需求用均值、中位数等填充
floats_filled = floats.fillna(0).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:20