防止pandas将None读取为Nan

10

我已经清理了一个数据集,并且需要用 None 替换很多 NaN 值。之后我将其保存到新的 CSV 文件中,但当我使用 pandas.read_csv 读取已清理的数据集时,所有的 None 值都被表示为 NaN,我该如何避免这种情况?


4
在读取CSV文件时,使用na_filter=False参数。 - jwillis0720
一个包含 nan 的列可以有浮点数 dtype。而包含 None 的列将会是对象 dtype。计算速度会变慢。 - hpaulj
1个回答

9
您可以在read_csv中使用参数keep_default_nana_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'>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接