如何在Panda数据框的一列中将所有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

当我尝试将一个函数应用于Amount列时,我收到以下错误。

ValueError: cannot convert float NaN to integer

我已经尝试使用数学模块中的.isnan应用一个函数
我已经尝试过大熊猫的.replace属性
我从pandas 0.9尝试了.sparse data属性
我也尝试过NaN == NaN语句在一个函数中。
我也在看这篇文章How do I replace NA values with zeros in an R dataframe?,同时看一些其他文章。
我尝试过的所有方法都没有工作,也不认识NaN。
任何提示或解决方案将不胜感激。

回答:

我相信DataFrame.fillna()会为你做这件事。
链接到a dataframea Series的文档。
例:

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

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How can I replace all the NaN values with Zero’s in a column of a pandas dataframe

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 6