pandas のデータフレームの欠損値を除外する方法をここにメモします。
dropna() メソッド
欠損値を除外するには dropna() メソッドを使います。
パラメータ
how='all' | すべての値が欠損値 NaN である行・列を削除 |
how='any' | 欠損値 NaN が一つでも含まれる行・列を削除 (デフォルト) |
thresh={int} | 欠損値NaNではない要素の数に応じて行・列を削除 |
subset=['name'] | 特定の行・列に欠損値NaNがある列・行を削除 |
inplace=True/False | 元のオブジェクトを変更 |
サンプル
csv
$ cat sample.csv 1,1-1,"1-2" 2,"",'', 3,, 4, , ,hoge 5,,5-1,
コード
import pandas as pd df = pd.read_csv('./sample.csv', header=None, names=['A', 'B', 'C', 'D']) print(f"{df}\n") print(f"how='any': \n{df.dropna(how='any')}\n") print(f"how='all': \n{df.dropna(how='all')}\n") msg = "how='all',subset=['B', 'C', 'D']" print(f"{msg}\n{df.dropna(how='all', subset=['B', 'C', 'D'])}\n")
実行結果
$ python sample.py A B C D 0 1 1-1 1-2 NaN 1 2 NaN '' NaN 2 3 NaN NaN NaN 3 4 hoge 4 5 NaN 5-1 NaN how='any': A B C D 3 4 hoge how='all': A B C D 0 1 1-1 1-2 NaN 1 2 NaN '' NaN 2 3 NaN NaN NaN 3 4 hoge 4 5 NaN 5-1 NaN how='all',subset=['B', 'C', 'D'] A B C D 0 1 1-1 1-2 NaN 1 2 NaN '' NaN 3 4 hoge 4 5 NaN 5-1 NaN