在python中,如何将具有多个聚合字段和多个索引字段的数据帧透视到sumIfs?

2024-10-01 05:02:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像他的一样的数据框

import pandas as pd
lst = [['A', '1','1', 25, 5], ['A', '1','0', 3,7], 
       ['A', '0','1', 5, 9], ['A', '0','0', 5, 10],
       ['B', '1','1', 15, 18], ['B', '1','0', 2, 20], 
       ['B', '0','1', 2, 60], ['B', '0','0', 55, 60]] 

df1=pd.DataFrame(lst, columns =['id', 'groupby1', 'groupby2','sumfield1','sumfield2'], dtype = float) 
df1

我如何将其聚合或透视成按id聚合的形式,并将groupby1和groupby2中的子字段加上1-预期的df如下

id sumfield1_gpby1_equal1 sumfield1_gpby2_equal1 sumfield2_gpby1_equal1 sumfield2_gpby2_equal1

A 28 30 12 14

B 17 17 38 78

28是通过将第一行和第二行相加得到的,其中groupby1==1


Tags: 数据importidpandasaspddf1lst
1条回答
网友
1楼 · 发布于 2024-10-01 05:02:23

简单的multiplicationconcatgroupby.sum将获得您的结果

df_gb1 = df1[['sumfield1', 'sumfield2']].mul(df1.groupby1, axis=0).add_suffix('_groupby1')
df_gb2 = df1[['sumfield1', 'sumfield2']].mul(df1.groupby2, axis=0).add_suffix('_groupby2')

df_sum = pd.concat([df_gb1, df_gb2], axis=1).groupby(df1.id).sum().reset_index()

Out[1574]:
  id  sumfield1_groupby1  sumfield2_groupby1  sumfield1_groupby2  \
0  A                28.0                12.0                30.0
1  B                17.0                38.0                17.0

   sumfield2_groupby2
0                14.0
1                78.0

相关问题 更多 >