pandas groupby和布尔选择

时间:2017-10-05 16:52:47

标签: python pandas group-by pandas-groupby

我常常在pandas

中做这样的事情
s2 = s1.groupby(level=1).sum()
s2 = s2[s2>25]

总之,我会做一些groupby操作,然后只想保留符合结果条件的结果。

有没有办法在一行?更具体地说,是否可以在不创建序列的情况下执行此操作,然后在第二步中执行布尔选择?

2 个答案:

答案 0 :(得分:7)

假设s1pandas.Series

  1. 您可以将level传递给pd.Series.sum
  2. pd.Series.compress很方便
  3. s2.sum(level=1).compress(lambda s: s.gt(25))
    

    假设s1pandas.DataFrame
    并且列名为'col'

    s.sum(level=1).query('col > 25')
    

答案 1 :(得分:4)

createCriteria(Entity.class).add(Restrictions.in("name", new String[] {"foo","bar"})).add(Restrictions.eq("parameter","baz")).add( Projections.groupProperty("name")).add(Projections.groupProperty("id")).list() + .loc

Serise

lambda

数据帧

df.groupby('name').a.sum().loc[lambda x: x>20]
Out[492]: 
name
Chn     84
Fra    165
Ind     71

DataInput

df.groupby('name').a.sum().to_frame().loc[lambda x: x['a']>20]
Out[490]: 
        a
name     
Chn    84
Fra   165
Ind    71