Python-如何在pandas数据框的列中将所有NaN值替换为零

我有一个数据框如下

      itm Date                  Amount 

67 420 2012-09-30 00:00:00 65211

68 421 2012-09-09 00:00:00 29424

69 421 2012-09-16 00:00:00 29877

70 421 2012-09-23 00:00:00 30990

71 421 2012-09-30 00:00:00 61303

72 485 2012-09-09 00:00:00 71781

73 485 2012-09-16 00:00:00 NaN

74 485 2012-09-23 00:00:00 11072

75 485 2012-09-30 00:00:00 113702

76 489 2012-09-09 00:00:00 64731

77 489 2012-09-16 00:00:00 NaN

当我尝试将一个函数应用于“金额”列时,出现以下错误。

ValueError: cannot convert float NaN to integer

我已经尝试过使用数学模块中的.isnan来应用函数。我已经尝试过pandas .replace属性。我已经尝试过pandas 0.9.sparse data属性。我还尝试过在函数中使用NaN == NaN语句。我还看了这篇文章如何在R数据帧中用零替换NA值?同时查看其他文章。我尝试过的所有方法均无效或无法识别NaN。任何提示或解决方案将不胜感激。

回答:

我相信DataFrame.fillna()会为你做到这一点。

链接到文档以获取数据框和系列。

例:

In [7]: df

Out[7]:

0 1

0 NaN NaN

1 -0.494375 0.570994

2 NaN NaN

3 1.876360 -0.229738

4 NaN NaN

In [8]: df.fillna(0)

Out[8]:

0 1

0 0.000000 0.000000

1 -0.494375 0.570994

2 0.000000 0.000000

3 1.876360 -0.229738

4 0.000000 0.000000

要仅将NaN填入一列,请仅选择该列。在这种情况下,我使用inplace = True实际更改df的内容。

In [12]: df[1].fillna(0, inplace=True)

Out[12]:

0 0.000000

1 0.570994

2 0.000000

3 -0.229738

4 0.000000

Name: 1

In [13]: df

Out[13]:

0 1

0 NaN 0.000000

1 -0.494375 0.570994

2 NaN 0.000000

3 1.876360 -0.229738

4 NaN 0.000000

以上是 Python-如何在pandas数据框的列中将所有NaN值替换为零 的全部内容, 来源链接: utcz.com/qa/436182.html

回到顶部