如何在Python中替换NaN值

3

我有一个数据框中的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","")
3个回答

11

使用 fillna 函数 (文档): 一个例子 -

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

3
简单易懂!您可以这样做
df_conbid_N_1 = pd.read_csv("test-2019.csv",dtype=str, sep=';',encoding='utf-8').fillna("")

0
我们可以使用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

values: 标量、字典、Series或DataFrame

因此,我们可以使用常量值进行替换,例如空字符串:
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

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