首页 > 解决方案 > Pandas groupby sum - 对两个变量进行分组,对所有其他数值变量求和并更改原始数据框

问题描述

如上所述,我想按两个变量('town_code','ballot')分组,将这些组中所有数字变量(政党的票数)相加,并实际更改原始数据框(称为“结果”,要分组)。请注意,数据框还包含一个非数字列 - 这是名称。每个组内的名称都是相同的,所以我只需要确保它在该过程之后保持不变。

示例:这就是我所拥有的: 在此处输入图像描述

这就是我需要的: 在此处输入图像描述

同时,我设法只保留数字变量,同时丢失非数字和 groupby 变量,使用这行代码:

results = results.groupby(['town_code','ballot']).sum()

标签: pandas-groupby

解决方案


我认为下面的代码可以满足您所需的解决方案

import pandas as pd
town_code=[1,1,1,1,2,2,2,3,3,4,4]
ballot=[1,2,3,3,1,2,2,1,2,1,2]   
town_name=['townsville','townsville','townsville','townsville','citysville','citysville'
             ,'citysville','villagesville','villageville','policeville','policeville']
party_a=[14,11,14,10,8,7,16,9,13,12,9]
party_b=[13,17,9,11,9,15,19,21,15,8,11]


df=pd.DataFrame({'town_code':town_code,'ballot':ballot,'town_name':town_name,
                                                'party_a':party_a,'party_b':party_b})

import numpy as np
pd.pivot_table(df,values=['party_a','party_b'],
                              index=['town_code','ballot','town_name'],aggfunc=np.sum)

在此处输入图像描述


推荐阅读