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

pandas的read_csv何时会将空白值读取为字符串'nan'?

Pandas读取CSV后字符串'nan'无法被fillna识别的问题解决

问题现象

使用如下代码读取CSV文件:

ab = pd.read_csv(os.path.join(data_dir, f'{prefix}_ab.csv'), dtype={'name': str}, low_memory=False)

运行后发现原本经文本编辑器确认的空白值被加载为字符串类型的'nan',导致基于np.nan的替换操作和.fillna('')均无法生效。

根因定位

最初误以为是read_csv的读取逻辑存在问题,后续排查确认:pandas实际上已正确将空白值识别为NaN,问题出在后续的数据处理函数:

set_as_null = [None, 'NOT APPLICABLE', np.nan]
df['column1'] = df['column1'].map(lambda x: '' if x in set_as_null else '_'.join(str(x).lower().split()))

核心原因:pandas和Numpy中存在np.nan != np.nan的特性,NaN值无法命中set_as_null的包含判断,执行str(x)时会将NaN强制转为字符串'nan',最终得到字符串类型的空值标识而非真实空值。

解决方案

在pd.read_csv中指定na_values参数处理'NOT APPLICABLE'这类自定义空值,再配合df.fillna('')即可完全解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:57:00