web-dev-qa-db-ja.com

NaN(パンダ)でフィルタリングする方法は?

pandasデータフレーム(df)があり、次のようなことをしたい:

_newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]
_

NaNを_np.NaN_、または_'NaN'_または_'nan'_などに置き換えようとしましたが、Trueと評価されるものはありません。 _pd.NaN_はありません。

上記の式を評価する前にdf.fillna(np.nan)を使用できますが、それはハック感があり、パンダ形式のNaNを識別できることに依存する他のpandas操作に干渉するか後。

この質問に対する簡単な答えがあるはずだと感じますが、どういうわけかそれは私を逃れました。どんなアドバイスも大歓迎です。ありがとうございました。

43
Gerhard

NaNNaNを含むものと等しくないため、これは機能しません。代わりにpd.isnull(df.var2)を使用してください。

52
Mark Whitfield

最も単純なソリューション:

filtered_df = df[df['var2'].isnull()]

これにより、 'var2'列にNaN値のみを含む行がフィルタリングされます。

30
Gil Baggio

パンダはnumpyのNaN値を使用します。つかいます - numpy.isnan は、pandasシリーズからブールベクトルを取得します。

6
NicholasM