分组后对熊猫数据框中的列求和

时间:2019-03-29 15:13:17

标签: python pandas dataframe pandas-groupby

我有一个Excel电子表格,其中包含键列(k1,k2)和金额列(a1至a12)。

我需要按k1,k2进行分组,并在结果数据帧中将各列求和并将金额保存到新列中。到目前为止,这是我尝试过的

import numpy as nm
import pandas as pd
df = pd.read_excel('C:\Users\pb\Desktop\py test\Bal.xlsx')
df1=df.groupby(['k1', 'k2'])
#sum a1 thru a12(also tried df['suma'] = df['a1']+df['a2'] 

df1['suma']=df1.apply(lambda x: x['a1'] + x['a2']) 

这是我遇到的错误

TypeErrorTraceback (most recent call last) <ipython-input-14-242ac0584a79> in <module>()
      3 df1=df.groupby(['k1', 'k2'])
      4 #sum a1 thru a12
----> 5 df1['sum']=df1.apply(lambda x: x['a1'] + x['a2'])

TypeError: 'DataFrameGroupBy' object does not support item assignment

有没有一种方法可以对分组依据之后的列求和?

预先感谢

enter image description here

1 个答案:

答案 0 :(得分:0)

在创建groupby时,除非通过聚合或其他方法将某些功能应用于该数据框,否则您不会创建新的数据框。您可以通过添加已经添加了前两列的列,然后通过求和来进行groupby来开始groupby。

df['suma']= x['k1']+x['k2']
df1= df.groupby(['k1','k2'], as_index= False).agg({'suma':'sum'})
相关问题