防止 pandas 将 None 读取为 Nan
Prevent pandas from reading None as Nan
我清理了一个数据集,不得不用 None
替换很多 NaN
值。之后我将它保存到一个新的 csv 文件中,当我使用 pandas.read_csv
读取清理后的数据集时,所有 None
值都表示为 NaN
,我该如何避免这种情况?
您可以在 read_csv
and then replace
字符串 None
中使用参数 keep_default_na
和 na_values
到值 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'>
我清理了一个数据集,不得不用 None
替换很多 NaN
值。之后我将它保存到一个新的 csv 文件中,当我使用 pandas.read_csv
读取清理后的数据集时,所有 None
值都表示为 NaN
,我该如何避免这种情况?
您可以在 read_csv
and then replace
字符串 None
中使用参数 keep_default_na
和 na_values
到值 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'>