1. ホーム
  2. python

[解決済み] pandasのデータフレームでセルをNaNに設定する方法

2022-06-11 21:31:02

質問

データフレームのある列の悪い値をNaNに置き換えたいのですが、可能でしょうか?

mydata = {'x' : [10, 50, 18, 32, 47, 20], 'y' : ['12', '11', 'N/A', '13', '15', 'N/A']}
df = pd.DataFrame(mydata)

df[df.y == 'N/A']['y'] = np.nan

しかし、最後の行はdfのコピーで作業しているため、失敗して警告を投げてしまいます。さて、これを処理する正しい方法は何でしょうか?ilocやixを使った多くの解決策を見たことがありますが、ここではブール条件を使う必要があります。

どのように解決するのですか?

を使うだけです。 replace :

In [106]:
df.replace('N/A',np.NaN)

Out[106]:
    x    y
0  10   12
1  50   11
2  18  NaN
3  32   13
4  47   15
5  20  NaN

あなたが試みているのは、チェーン・インデックスと呼ばれるものです。 http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

を使用することができます。 loc を使うことで、オリジナルのdFで操作することを保証します。

In [108]:
df.loc[df['y'] == 'N/A','y'] = np.nan
df

Out[108]:
    x    y
0  10   12
1  50   11
2  18  NaN
3  32   13
4  47   15
5  20  NaN