😺

複数列の条件で NaN でない行を取り出す

2024/03/31に公開

複数列の条件で NaN でない行を取り出す

コード

import pandas as pd

input_data = [
    {"name" : "A", "value1" : 1},
    {"name" : "B", "value2" : 2},
    {"name" : "C", "value1" : 3, "value2" : 5},
    {"name" : "D", "value1" : 4, "value2" : 6, "value3" : 7},
]
df = pd.DataFrame(input_data)
print(df)

df2 = df[ df[ ["value1", "value2"] ].notna().all(axis=1) ]
print(df2)

説明

  • pandas.DataFrame.notna を呼ぶと、指定した DataFrame の各列に対して NaN ではない場合 True, NaN の場合 False を返す。( df[ ["value1", "value2"] で "value1" 列と "value2" 列のみを取り出す。
  • pandas.DataFrame.all を呼ぶと、列 (axis=1) または行 (axis=0) のすべてが True の場合に True になる。
  • この結果を df の中に入れて、指定した列がすべて NaN ではない行のみを取りだせる。

リンク

Discussion