Skip to main content
 首页 » 编程设计

python之按两列分组并求和

2025年05月04日23qlqwjy

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