我有一个数据框如下
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
Run Code Online (Sandbox Code Playgroud)
当我尝试将一个函数应用于Amount列时,我得到以下错误.
ValueError: cannot convert float NaN to integer
Run Code Online (Sandbox Code Playgroud)
我尝试使用数学模块中的.isnan应用函数我已经尝试过pandas .replace属性我尝试了pandas 0.9中的.sparse数据属性我也尝试过函数中的NaN == NaN语句.我也看过这篇文章如何在R数据帧中用零替换NA值?同时看一些其他文章.我尝试的所有方法都没有工作或者没有认识到NaN.任何提示或解决方案将不胜感激.
如何将 Pandas 数据框中的所有非 NaN 值替换为 1 但单独保留 NaN 值?这几乎就是我正在寻找的。问题是它也使 NaN 值为 0。然后我必须将它们重置为 NaN 之后。
我想要这个
a b
0 NaN QQQ
1 AAA NaN
2 NaN BBB
Run Code Online (Sandbox Code Playgroud)
成为这个
a b
0 NaN 1
1 1 NaN
2 NaN 1
Run Code Online (Sandbox Code Playgroud)
这段代码几乎就是我想要的
newdf = df.notnull().astype('int')
Run Code Online (Sandbox Code Playgroud)
上面的代码是这样做的
a b
0 0 1
1 1 0
2 0 1
Run Code Online (Sandbox Code Playgroud)