特定の列でNaNを含む行を選択するにはどうすればよいですか?


104

このデータフレームを前提として、「Col2」がNaN?に等しい行のみを選択するにはどうすればよいですか?

In [56]: df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)], columns=["Col1", "Col2", "Col3"])

In [57]: df
Out[57]: 
   0   1   2
0  0   1   2
1  0 NaN   0
2  0   0 NaN
3  0   1   2
4  0   1   2

結果は次のようになります。

Out[57]: 
   0   1   2
1  0 NaN   0

回答:


180

次のことを試してください。

df[df['Col2'].isnull()]

10
あるいはdf.loc[df['Col2'].isnull()]、.locがあなたのようなものである場合
Alexander

2
Q:これを無効にする方法、つまり、列のデータが「nullではない」場合はどうすればよいですか?A:.notnull()演算子を使用します。
sk

10

@qbzenkerは、最も慣用的な方法IMOを提供しました

ここにいくつかの選択肢があります:

In [28]: df.query('Col2 != Col2') # Using the fact that: np.nan != np.nan
Out[28]:
   Col1  Col2  Col3
1     0   NaN   0.0

In [29]: df[np.isnan(df.Col2)]
Out[29]:
   Col1  Col2  Col3
1     0   NaN   0.0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.