如何在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
相关产品推荐
相关产品推荐

