python分组聚合显示全部列_python – pandas:如何按多列分组并在多列上执行不同的聚合?...

该博客介绍了如何从给定表格中移除日期列,按公司和地区对Count和Amount进行聚合,求得平均值和总额。作者提供了两种方法:一是使用字典指定聚合操作,二是通过列前缀重命名。未来版本兼容性提示也包含在内。
摘要由CSDN通过智能技术生成

可以说我有一个看起来像这样的表:

Company Region Date Count Amount

AAA XXY 3-4-2018 766 8000

AAA XXY 3-14-2018 766 8600

AAA XXY 3-24-2018 766 2030

BBB XYY 2-4-2018 66 3400

BBB XYY 3-18-2018 66 8370

BBB XYY 4-6-2018 66 1380

我想摆脱Date列,然后按公司和地区汇总,找到Count的平均值和Amount的总和.

预期产量:

Company Region Count Amount

AAA XXY 766 18630

BBB XYY 66 13150

我在这里查看了这篇文章,还有很多其他在线帖子,但看起来他们只是执行一种聚合操作(例如,我可以通过多列聚合,但只能产生一个列输出作为总和OR计数,而不是和和计数)

有人可以帮忙吗?

我做了什么:

我在这里关注这篇文章:

但是,当我尝试使用本文中提供的方法(在文章末尾)时,通过使用字典:

aggregation = {

'Count': {

'Total Count': 'mean'

},

'Amount': {

'Total Amount': 'sum'

}

}

我会收到这个警告:

FutureWarning: using a dict with renaming is deprecated and will be removed in a future version

return super(DataFrameGroupBy, self).aggregate(arg, *args, **kwargs)

我知道它现在有效但我想确保我的脚本也能在以后工作.如何更新我的代码以便将来兼容?

最佳答案 需要通过单个非嵌套字典进行聚合,然后重命名列:

aggregation = {'Count': 'mean', 'Amount': 'sum'}

cols_d = {'Count': 'Total Count', 'Amount': 'Total Amount'}

df = df.groupby(['Company','Region'], as_index=False).agg(aggregation).rename(columns=cols_d)

print (df)

Company Region Total Count Total Amount

0 AAA XXY 766 18630

1 BBB XYY 66 13150

使用add_prefix重命名的另一个解决方案:

aggregation = {'Count': 'mean', 'Amount': 'sum'}

df = df.groupby(['Company','Region']).agg(aggregation).add_prefix('Total ').reset_index()

print (df)

Company Region Total Count Total Amount

0 AAA XXY 766 18630

1 BBB XYY 66 13150

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值