通过对不同列使用不同聚合的 pandas 数据框进行分组

Posted

技术标签:

【中文标题】通过对不同列使用不同聚合的 pandas 数据框进行分组【英文标题】:Group by with a pandas dataframe using different aggregation for different columns 【发布时间】:2017-05-07 06:12:07 【问题描述】:

我有一个 pandas 数据框 df 与列 [a, b, c, d, e, f]。我想在df 上进行分组。我可以最好地描述它应该在 SQL 中做什么:

SELECT a, b, min(c), min(d), max(e), sum(f)
FROM df
GROUP BY a, b 

如何通过在我的数据框df 上使用 pandas 来进行此组?

考虑df

a  b  c  d  e  f
1  1  2  5  9  3    
1  1  3  3  4  5  
2  2  4  7  4  4 
2  2  5  3  8  8 

我希望结果是:

a  b  c  d  e  f
1  1  2  3  9  8    
2  2  4  3  8  12 

【问题讨论】:

请提供示例数据框和预期输出。 欺骗:***.com/questions/33217702/… 而这个:***.com/questions/30674708/… 【参考方案1】:

使用agg

df = pd.DataFrame(
    dict(
        a=list('aaaabbbb'),
        b=list('ccddccdd'),
        c=np.arange(8),
        d=np.arange(8),
        e=np.arange(8),
        f=np.arange(8),
    )
)

funcs = dict(c='min', d='min', e='max', f='sum')
df.groupby(['a', 'b']).agg(funcs).reset_index()

   a  b  c  e   f  d
0  a  c  0  1   1  0
1  a  d  2  3   5  2
2  b  c  4  5   9  4
3  b  d  6  7  13  6

您的数据

   a  b  c  e   f  d
0  1  1  2  9   8  3
1  2  2  4  8  12  3

【讨论】:

以上是关于通过对不同列使用不同聚合的 pandas 数据框进行分组的主要内容,如果未能解决你的问题,请参考以下文章

Pandas实现groupby分组聚合后不同列数据统计

Pandas Groupby:同一列上的聚合,但总计基于两个不同的标准/数据框

Pandas详解聚合运算agg()

为 pandas groupby 中的不同特征分配不同的聚合函数

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用agg函数计算每个分组不同数值变量的聚合统计值agg参数为字典指定不同变量的聚合计算统计量的形式

100天精通Python(数据分析篇)——第65天:Pandas聚合操作与案例