如何在 Pandas 数据帧的某一列中将 NaN 值替换为零?
如何在 Pandas 数据帧的某一列中将 NaN 值替换为零?
我有一个Pandas Dataframe如下:
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
我尝试使用Math模块中的.isnan应用函数
我尝试了pandas.replace属性
我尝试了pandas 0.9的.sparse数据属性
我还尝试了在功能中使用if NaN == NaN语句。
我还查看了这篇文章How do I replace NA values with zeros in an R dataframe?,同时查看了其他文章。
所有我尝试的方法都没有起作用,或者不能识别NaN。
任何提示或解决方案将不胜感激。
admin 更改状态以发布 2023年5月22日
我相信 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
编辑:
为了避免 SettingWithCopyWarning
警告,使用内置的仅针对列的功能:
df.fillna({1:0}, inplace=True)