2017-01-12 13 views
2

私はデータフレームを持っています。このデータフレームのサブセット(新しいコピーではありません)を返して、いくつかの操作を実行したいと思います。しかし、私はそれが私が必要とする基準でフィルタリングすることができないことがわかります。パンダでNaNを扱う

私はファイラするには、これらの3つの基準を必要とする:

1. df['A'] != NaN 
2. df['B'] == 'X' | df['B'] == NaN 
3. df['C'] == NaN 

は現在、私は、基準1のためにこれをやっているが、私は基準2および3

filter_data = df.loc[(df['A'].dropna)] 
+0

関連:http://stackoverflow.com/questions/18689512/efficiently-checking-if-arbitrary-object-is-nan-in-python-numpy-pandas – EdChum

答えて

4

必要性を含める方法と少しこだわっていますNaNのための特別な機能 - isnullnotnull

df['A'].notnull() 
(df['B'] == 'X') | (df['B'].isnull()) 
df['C'].isnull() 
+0

は使用できません'' NaN''は 'df.eval()'にありますか? – MYGz

+0

私はいいと思う、最高の使用は非常に最適化されたパンダファンクションです。 – jezrael

2

queryを使用して、NULLまたはNULL以外を見つけることができます。ヌルは自分自身と同じではない傾向があります。

df.dropna(subset=['A']) < =>df.query('A == A') < =>df[df.A.notnull()]


query

  1. df.query('A == A')またはdf.dropna(subset=['A'])またはdf[df.A.notnull()]
  2. df.query('B == "X" | B != B')またはdf.query('B == "X" or B != B')
  3. を使用して、3つのフィルタ
  4. df.query('C != C')またはdf[df.C.isnull()]
関連する問題