首页 > 解决方案 > 聚合后的熊猫过滤器

问题描述

是否可以在 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']}))

聚合后我想要1count到4 之间val

标签: pandaspandas-groupby

解决方案


我不明白你是想要 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)]

推荐阅读