我使用以下代码从pandas dataframe获取带有一些值的行。我需要将此代码转换为pandas.query()。
results= rs_gp[rs_gp['Col1'].notnull()]
当我转换为:results= rs_gp.query('Col1!=None')
它给了我错误'没有定义'。有人可以帮忙。
谢谢, Rtut
答案 0 :(得分:8)
我们可以使用NaN != NaN
:
In [1]: np.nan == np.nan
Out[1]: False
因此,将列与自身进行比较将仅返回非NaN值:
rs_gp.query('Col1 == Col1')
演示:
In [42]: df = pd.DataFrame({'Col1':['aaa', np.nan, 'bbb', None, '', 'ccc']})
In [43]: df
Out[43]:
Col1
0 aaa
1 NaN
2 bbb
3 None
4
5 ccc
In [44]: df.query('Col1 == Col1')
Out[44]:
Col1
0 aaa
2 bbb
4
5 ccc