😺
複数列の条件で NaN でない行を取り出す
複数列の条件で 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