聚合后的熊猫过滤器

时间:2018-11-17 07:29:22

标签: pandas pandas-groupby

是否可以在groupby聚合之后过滤数据?

我在应用groupby函数后汇总了总和,并希望查看总和在某些值之间的行。

这是基本代码

A = pd.DataFrame([
    [1, 2], 
    [2, 3], 
    [1, 6], 
    [2, 7], 
    [3, 5],
    [2, 9],
    [4, 7], 
    [3, 5],
    [3, 9],
    [3, 4]
], columns=['id', 'val'])

display(A)
display(A.groupby(['id']).agg({'val': ['sum', 'count']}))

我希望count中的val在聚合后的1到4之间

1 个答案:

答案 0 :(得分:1)

我不明白您是否想要1到4之间的总和或计数。因此,这是我针对以下两个选项的实现方式:

import pandas as pd
A = pd.DataFrame([
    [1, 2], 
    [2, 3], 
    [1, 6], 
    [2, 7], 
    [3, 5],
    [2, 9],
    [4, 7], 
    [3, 5],
    [3, 9],
    [3, 4],
    [1,2],
    [1,2],
    [1,2],
    [1,2],
    [1,2],
], columns=['id', 'val'])

s = A.groupby(['id']).agg({'val': ['sum', 'count']})
# If you want the count
s[(s['val']['count']<=4) & (s['val']['count']>=1)]
# If you want the sum
s[(s['val']['sum']<=4) & (s['sum']['count']>=1)]