データフレーム列の NaN 値を置き換える方法 質問する

データフレーム列の NaN 値を置き換える方法 質問する

以下のような 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メソッド、.sparsepandas 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})

おすすめ記事