【问题标题】:Prevent pandas from reading None as Nan防止 pandas 将 None 读为 Nan
【发布时间】:2017-06-21 00:55:04
【问题描述】:

我清理了一个数据集,不得不用None 替换很多NaN 值。之后我将它保存到一个新的 csv 文件中,当我使用pandas.read_csv 读取清理后的数据集时,所有None 值都表示为NaN,我该如何避免这种情况?

【问题讨论】:

  • 在 read_csv 中使用 na_filter=False
  • 带有nan 的列可以具有浮点数据类型。带有None 的一个将是object dtype。计算会比较慢。

标签: python csv pandas numpy nan


【解决方案1】:

您可以在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'>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2019-05-29
    • 2021-03-22
    • 2017-03-07
    • 2018-06-25
    相关资源
    最近更新 更多