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

如何在Pandas读取CSV时将NaN(氮化钠)识别为字符串而非缺失值?

解决Pandas读取CSV时将化学式NaN识别为缺失值的问题

Pandas的read_csv方法默认会把字符串NaN解析为浮点型的缺失值(nan),即便指定dtype={'formula': str}也无效——因为缺失值解析逻辑优先于类型指定。以下是两种可行的解决方法:

方法1:自定义缺失值识别规则

通过na_values参数指定仅将空字符串识别为缺失值,排除NaN字符串:

import pandas as pd

df = pd.read_csv('sample.csv', na_values=[''], dtype={'formula': str})
print(df.loc[0]['formula'])
# >> NaN
print(type(df.loc[0]['formula']))
# >> <class 'str'>

方法2:禁用默认缺失值识别

设置keep_default_na=False,完全关闭Pandas默认的缺失值解析规则,所有字符串都会原样读取:

import pandas as pd

df = pd.read_csv('sample.csv', keep_default_na=False, dtype={'formula': str})
print(df.loc[0]['formula'])
# >> NaN
print(type(df.loc[0]['formula']))
# >> <class 'str'>

原理说明

read_csv的默认行为是将'NaN'、'na'、''等字符串标记为缺失值,这个步骤在类型转换之前执行。因此仅指定dtype无法阻止NaN被解析为缺失值,必须通过调整缺失值相关参数来规避。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:15:24