我有一个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
有没有一种方法可以对分组依据之后的列求和?
预先感谢
答案 0 :(得分:0)
在创建groupby时,除非通过聚合或其他方法将某些功能应用于该数据框,否则您不会创建新的数据框。您可以通过添加已经添加了前两列的列,然后通过求和来进行groupby来开始groupby。
df['suma']= x['k1']+x['k2']
df1= df.groupby(['k1','k2'], as_index= False).agg({'suma':'sum'})