我需要将两个小组合并在一起。我该怎么办?
例如:
表1
Index|Column1|Column2|Values
0 | A| B| 10
1 | A| B| 20
2 | B| B| 10
3 | B| B| 10
4 | B| A| 30
5 | C| C| 30
6 | C| C| 10
7 | C| D| 10
8 | C| D| 20
第1列总和的第1组
Index|Values(sum)
A | 30
B | 50
C | 70
第2列总和的第2组
Index|Values(sum)
A | 30
B | 50
C | 40
D | 30
现在,我想将Group1和Group2组合在一起,并像下面这样向Table1添加一列。
组合
Index|Values
A | 60
B | 100
C | 110
D | 30
表1
Index|Column1|Column2|Values|Combine
0 | A| B| 10| 60
1 | A| B| 20| 60
2 | B| B| 10| 100
3 | B| B| 10| 100
4 | B| A| 30| 100
5 | C| C| 30| 110
6 | C| C| 10| 110
7 | C| D| 10| 110
8 | C| D| 20| 110
答案 0 :(得分:2)
您可以融化两列,然后聚合。在嵌套步骤中将值映射到Column1
mapper = df.melt('Values',['Column1', 'Column2']).groupby('value')['Values'].sum().to_dict()
df['Combine'] = df['Column1'].map(mapper)
Column1 Column2 Values Combine
index
0 A B 10 60
1 A B 20 60
2 B B 10 100
3 B B 10 100
4 B A 30 100
5 C C 30 110
6 C C 10 110
7 C D 10 110
8 C D 20 110
答案 1 :(得分:1)
如果您将数据框称为df
,则可以
v = df.groupby('Column1').Values.sum().add(df.groupby('Column2').Values.sum(), fill_value=0)
df['Combine'] = v.loc[df['Column1']].values
答案 2 :(得分:0)
df['Values1'] = df.groupby('Column1')['Values'].transform('sum')
这将在Column1上进行分组。
df['Values2'] = df.groupby('Column2')['Values'].transform('sum')
这将在Column2上执行。 接下来,我们可以将结果合并如下:
df['Combine'] = df['Values1'] + df['Values2']