pandasのdataframeでqueryメソッドを使って条件抽出する際にNanを除く方法についてよく忘れるので忘備録として。
基本は 列名.isnull()でNanの行を抽出。
逆にNan以外の場合は~(チルダ)を列名の前につけて~列名.isnull()にする。
ただし、Nan!=NanがTrueとなるのを利用して列名同士を比較する方法もある。
import numpy as np
import pandas as pd
df = pd.DataFrame({'col1':[0,1,np.NAN,None]})
df
# col1
#0 0.0
#1 1.0
#2 NaN
#3 NaN
df.query('col1.isnull()')
# col1
#2 NaN
#3 NaN
#Nan!=Nan がTrueになるのを利用
df.query('col1!=col1')
# col1
#2 NaN
#3 NaN
#~で否定を表す
df.query('~col1.isnull()')
# col1
#0 0.0
#1 1.0
#Nan==Nan がFalseになるのを利用
df.query('col1==col1')
# col1
#0 0.0
#1 1.0