防止 pandas 将 None 读为 Nan
Posted
技术标签:
【中文标题】防止 pandas 将 None 读为 Nan【英文标题】:Prevent pandas from reading None as Nan 【发布时间】:2017-06-21 00:55:04 【问题描述】:我清理了一个数据集,不得不用None
替换很多NaN
值。之后我将它保存到一个新的 csv 文件中,当我使用pandas.read_csv
读取清理后的数据集时,所有None
值都表示为NaN
,我该如何避免这种情况?
【问题讨论】:
在 read_csv 中使用 na_filter=False 带有nan
的列可以具有浮点数据类型。带有None
的一个将是object dtype。计算会比较慢。
【参考方案1】:
您可以在read_csv
中使用参数keep_default_na
和na_values
,然后将replace
字符串None
用于值None
:
import pandas as pd
from pandas.compat import StringIO
temp=u"""a,b
None,NaN
a,8"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp),keep_default_na=False,na_values=['NaN'])
print (df)
a b
0 None NaN
1 a 8.0
print (type(df.a.iloc[0]))
<class 'str'>
df = df.replace('None':None)
print (df)
a b
0 None NaN
1 a 8.0
print (type(df.a.iloc[0]))
<class 'NoneType'>
【讨论】:
以上是关于防止 pandas 将 None 读为 Nan的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 pandas 将原始数据库日期格式转换为 pandas 日期格式
在 Pandas DataFrame 中用 None 替换无效值
如何防止 pandas.to_datetime() 函数将 0001-01-01 转换为 2001-01-01