当前位置: 首页 > 知识库问答 >
问题:

如何替换python中的NaN值[duplicate]

慕容明煦
2023-03-14

我的数据帧中有一个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","")

共有3个答案

公西承
2023-03-14

我们有熊猫的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接受以下内容作为fill

值:标量、dict、序列或数据帧

因此,我们可以替换为常量值,例如空字符串:

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。系列pd。数据帧

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

这是非常有用的,因为它允许您使用从列中提取的一些统计信息(例如mean模式)来填充数据帧列中缺少的值。假设我们有:

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
鲜于岳
2023-03-14

易于理解的你可以这样做

df_conbid_N_1 = pd.read_csv("test-2019.csv",dtype=str, sep=';',encoding='utf-8').fillna("")
阎弘雅
2023-03-14

使用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
 类似资料:
  • 问题内容: 假设我有一个带有 的DataFrame : 我需要做的是用上方的同一列中NaN的第一个非NaN值替换每个值。假设第一行永远不会包含NaN。因此,对于前面的示例,结果将是 我可以遍历整个DataFrame的逐列,逐元素并直接设置值,但是是否有一种简单的方法(最佳无循环方法)来实现这一点? 问题答案: 你可以在上使用该方法,并将该方法指定为ffill(正向填充): 这个方法 将上一个有效观

  • 问题内容: 我是pandas的新手,我正在尝试在Dataframe中加载csv。我的数据缺少表示为的值?,而我正尝试将其替换为标准的Missing值-NaN 请帮助我。我曾尝试阅读过Pandas文档,但无法遵循。 数据 成人数据 问题答案: 您可以使用: 或整个df: 更新 好的,我已经解决了您的问题,默认情况下,如果您不传递分隔符,则将逗号作为分隔符。 您的数据,尤其是一行有问题的示例: 实际上

  • 例如,我想把'NAN'换成'dog'和'cat'。像从1-30'楠'应该换成'dog',从40-100'应该换成'cat'。我应该怎么做

  • 本文向大家介绍Python 实现将numpy中的nan和inf,nan替换成对应的均值,包括了Python 实现将numpy中的nan和inf,nan替换成对应的均值的使用技巧和注意事项,需要的朋友参考一下 nan:not a number inf:infinity;正无穷 numpy中的nan和inf都是float类型 t!=t 返回bool类型的数组(矩阵) np.count_nonzero(

  • 当我尝试将函数应用于Amount列时,我得到以下错误: 我试过使用Math模块中的.isnan应用函数我试过使用pandas.replace属性我试过使用pandas0.9中的.sparse data属性我也试过使用函数中的if NaN==NaN语句。我还看了这篇文章,如何在R数据帧中用0替换NA值?同时查看一些其他文章。我试过的所有方法都不起作用,或者不认识南。如有任何提示或解决方案,将不胜感激

  • 问题内容: 我有一个数据框如下 当我尝试将一个函数应用于“金额”列时,出现以下错误。 我已经尝试过使用数学模块中的来应用函数。我已经尝试过属性。我已经尝试过的属性。我还尝试过在函数中使用语句。我还看了这篇文章如何在R数据帧中用零替换NA值?同时查看其他文章。我尝试过的所有方法均无效或无法识别NaN。任何提示或解决方案将不胜感激。 问题答案: 我相信DataFrame.fillna()会为你做到这一