在group by之后对数据帧中的列求和

2024-09-26 22:11:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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


Tags: importa2dfa1ask2k1excel
1条回答
网友
1楼 · 发布于 2024-09-26 22:11:58

创建groupby时,除非通过聚合或其他方式应用了某个函数,否则不会创建新的数据帧。您可以在groupby之前添加一个已经在添加前两列的列,然后使用sum执行groupby。你知道吗

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

相关问题 更多 >

    热门问题