我常常在pandas
:
s2 = s1.groupby(level=1).sum()
s2 = s2[s2>25]
总之,我会做一些groupby
操作,然后只想保留符合结果条件的结果。
有没有办法在一行?更具体地说,是否可以在不创建序列的情况下执行此操作,然后在第二步中执行布尔选择?
答案 0 :(得分:7)
假设s1
是pandas.Series
level
传递给pd.Series.sum
pd.Series.compress
很方便s2.sum(level=1).compress(lambda s: s.gt(25))
假设s1
是pandas.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