python分组聚合显示全部列_python – 如何在pandas中的多个列上进行分组和聚合

我在pandas中有以下数据帧

ID Balance ATM_drawings Value

1 100 50 345

1 150 33 233

2 100 100 333

2 100 100 234

我想要所需格式的数据

ID Balance_mean Balance_sum ATM_Drawings_mean ATM_drawings_sum

1 75 250 41.5 83

2 200 100 200 100

我正在使用以下命令在pandas中执行此操作

df1= df[['Balance','ATM_drawings']].groupby('ID', as_index = False).agg(['mean', 'sum']).reset_index()

但是,它没有给出我想要的东西.

解决方法:

您可以使用字典为每个系列指定聚合函数:

d = {'Balance': ['mean', 'sum'], 'ATM_drawings': ['mean', 'sum']}

res = df.groupby('ID').agg(d)

# flatten MultiIndex columns

res.columns = ['_'.join(col) for col in res.columns.values]

print(res)

Balance_mean Balance_sum ATM_drawings_mean ATM_drawings_sum

ID

1 125 250 41.5 83

2 100 200 100.0 200

或者您可以通过dict.fromkeys定义d:

d = dict.fromkeys(('Balance', 'ATM_drawings'), ['mean', 'sum'])

标签:python,indexing,dataframe,pandas,pandas-groupby

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值