问题

我有一个数据帧如下

       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从Math模块应用函数 我尝试了pandas .replace属性 我从pandas 0.9尝试了.space数据属性 我也尝试过如果函数中的NaN = = NaN语句. 我也看过这篇文章如何在R数据帧中用零替换NA值? 同时查看其他一些文章. 我尝试过的所有方法都没有工作或不识别NaN. 任何Hints或解决方案将不胜感激.

  最佳答案

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

Link to Docs for a dataframe a 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
 

  相同标签的其他问题

pythonpandasdataframe