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

发布于 2021-02-02 23:18:29

我有一个数据框如下

      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。任何提示或解决方案将不胜感激。

关注者
0
被浏览
84
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我相信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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看