以下のような Pandas データフレームがあります。
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
メソッド、.sparse
pandas 0.9のデータ属性、NaN == NaN
関数内のif文を使用して関数を適用しようとしました。また、このQ/A; どれも機能しません。
どうすればいいのですか?
ベストアンサー1
DataFrame.fillna()
またはSeries.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
1 つの列のみに NaN を入力するには、その列だけを選択します。
In [12]: df[1] = df[1].fillna(0)
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
または、組み込みの列固有の機能を使用することもできます。
df = df.fillna({1: 0})