x1 = [{'id1': 'Africa', 'id2': 'Europe', 'v': 1},
{'id1': 'Europe', 'id2': 'North America', 'v': 5},
{'id1': 'North America', 'id2': 'Asia', 'v': 2,},
{'id1': 'North America', 'id2': 'Asia', 'v': 3}]
df = pd.DataFrame(x1)
我如何按大洲分组并根据“v”列获得总和?
例如,我希望得到每个大陆的值(value)总和如下:
Africa: 1 (1)
Europe: 6 (1 + 5)
North America: 10 (5 + 2 + 3)
Europe: 6 (1 + 5)
请您参考如下方法:
使用melt并聚合 sum:
s = df.melt('v').groupby('value')['v'].sum()
print (s)
value
Africa 1
Asia 5
Europe 6
North America 10
Name: v, dtype: int64
对于DataFrame:
df = df.melt('v', value_name='a').groupby('a', as_index=False)['v'].sum()
print (df)
a v
0 Africa 1
1 Asia 5
2 Europe 6
3 North America 10
