web-dev-qa-db-ja.com

Python、Pandas:欠損値のある行のみを返します

Pandas Pythonで作業中...

いくつかの欠損値を含むデータセットを使用していますが、欠損データのある行のみを含むデータフレームを返したいです。これを行う良い方法はありますか?

(これを行う私の現在の方法は、「欠損値のないデータフレームにどのインデックスがないかを確認し、それらのインデックスからdfを作成する」という非効率な方法です。)

33
user2487726

anyaxis=1を使用して、行ごとに少なくとも1つのTrueをチェックし、 boolean indexing でフィルタリングできます。

null_data = df[df.isnull().any(axis=1)]
72
metersk

Meterkの答えと同様に、

null_data = df[np.logical_or.reduce(df.isnull().values, axis=1)]

テスト

n = 2
df = pd.DataFrame({'a':np.tile([0,1,2,3,4,np.nan],n),
                   'b':np.tile([0,1,2,3,np.nan,5],n)})

x = df[np.logical_or.reduce(df.isnull().values,axis=1)]
y = df[df.isnull().any(axis=1)]
x.equals(y)
0
user3226167