Reputation: 1533
I have pandas dataframe that I want to execute on it query function with isnull() or not isnull() condition like that:
In [67]: df_data = pd.DataFrame({'a':[1,20,None,40,50]})
In [68]: df_data
Out[68]: a
0 1.0
1 20.0
2 NaN
3 40.0
4 50.0
if I use this command:
df_data.query('a isnull', engine='python')
or this command:
df_data.query('a isnull()', engine='python')
I get an error:
In [75]: df_data.query('a isnull', engine='python')
File "<unknown>", line 1 a isnull
SyntaxError: invalid syntax
In [76]: df_data.query('a isnull()', engine='python')
File "<unknown>", line 1 a isnull ()
SyntaxError: invalid syntax
What is the right way to do that?
Thank you.
Upvotes: 29
Views: 32282
Reputation: 862831
Use .
:
a = df_data.query('a.isnull()', engine='python')
print (a)
a
2 NaN
b = df_data.query('a.notnull()', engine='python')
print (b)
a
0 1.0
1 20.0
3 40.0
4 50.0
You can use also logic NaN != NaN
:
a = df_data.query('a != a')
print (a)
a
2 NaN
b = df_data.query('a == a')
print (b)
a
0 1.0
1 20.0
3 40.0
4 50.0
Upvotes: 59