如何在python中替换NaN值[重复]

Posted

技术标签:

【中文标题】如何在python中替换NaN值[重复]【英文标题】:how to replace NaN value in python [duplicate] 【发布时间】:2019-05-05 15:33:09 【问题描述】:

我的数据框中有一个 NaN 值列表,我想用空字符串替换 NaN 值。

到目前为止我尝试过的方法都不起作用:

df_conbid_N_1 = pd.read_csv("test-2019.csv",dtype=str, sep=';', encoding='utf-8')
df_conbid_N_1['Excep_Test'] = df_conbid_N_1['Excep_Test'].replace("NaN","")

【问题讨论】:

【参考方案1】:

使用fillna (docs): 一个例子-

df = pd.DataFrame('no': [1, 2, 3],
                    'Col1':['State','City','Town'],
                  'Col2':['abc', np.NaN, 'defg'],
                  'Col3':['Madhya Pradesh', 'VBI', 'KJI'])

df

   no   Col1    Col2    Col3
0   1   State   abc Madhya Pradesh
1   2   City    NaN VBI
2   3   Town    defg    KJI

df.Col2.fillna('', inplace=True)
df

    no  Col1    Col2    Col3
0   1   State   abc     Madhya Pradesh
1   2   City            VBI
2   3   Town    defg    KJI

【讨论】:

【参考方案2】:

我们有 pandas 的 fillna 来填补缺失值。


让我们通过示例数据框了解一些用例:

df = pd.DataFrame('col1':['John', np.nan, 'Anne'], 'col2':[np.nan, 3, 4])

   col1  col2
0  John   NaN
1   NaN   3.0
2  Anne   4.0

如文档中所述,fillna 接受以下内容作为填充 values

值:标量、字典、系列或数据帧

所以我们可以用一个常量值替换,比如一个空字符串:

df.fillna('')

   col1 col2
0  John     
1          3
2  Anne    4
1

您也可以替换为字典映射column_name:replace_value

df.fillna('col1':'Alex', 'col2':2)

   col1  col2
0  John   2.0
1  Alex   3.0
2  Anne   4.0

或者您也可以替换为另一个 pd.Seriespd.DataFrame

df_other = pd.DataFrame('col1':['John', 'Franc', 'Anne'], 'col2':[5, 3, 4])

df.fillna(df_other)

    col1  col2
0   John   5.0
1  Franc   3.0
2   Anne   4.0

这非常有用,因为它允许您使用从列中提取的一些统计信息来填充数据框列上的缺失值,例如 meanmode。假设我们有:

df = pd.DataFrame(np.random.choice(np.r_[np.nan, np.arange(3)], (3,5)))
print(df)

     0    1    2    3    4
0  NaN  NaN  0.0  1.0  2.0
1  NaN  2.0  NaN  2.0  1.0
2  1.0  1.0  2.0  NaN  NaN

那么我们就可以轻松做到了:

df.fillna(df.mean())

     0    1    2    3    4
0  1.0  1.5  0.0  1.0  2.0
1  1.0  2.0  1.0  2.0  1.0
2  1.0  1.0  2.0  1.5  1.5

【讨论】:

【参考方案3】:

简单!你可以这样做

df_conbid_N_1 = pd.read_csv("test-2019.csv",dtype=str, sep=';',encoding='utf-8').fillna("")

【讨论】:

以上是关于如何在python中替换NaN值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

熊猫如何使用 groupby 将 NaN 值替换为平均值 [重复]

如何在熊猫中使用 python 循环替换缺失值? [关闭]

在Java中用0替换Nan值[重复]

Python:替换数组中的 NaN 或 MEAN 而不是 -999 值[重复]

Python - 替换熊猫数据框中的负无穷大值[重复]

根据 NaN 将列值替换为 0 或 1 [重复]