Pandas.dataframe.query() - 获取非空行(Pandas等同于SQL:" IS NOT NULL")

时间:2016-06-16 15:38:34

标签: python pandas dataframe

我使用以下代码从pandas dataframe获取带有一些值的行。我需要将此代码转换为pandas.query()。

results= rs_gp[rs_gp['Col1'].notnull()]

当我转换为:results= rs_gp.query('Col1!=None')

它给了我错误'没有定义'。有人可以帮忙。

谢谢, Rtut

1 个答案:

答案 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