7

我有一个像这样的熊猫数据框:

>>> df = pd.DataFrame({'MONTREGL':[10,10,2222,35,200,56,5555],'SINID':['aaa','aaa','aaa','bbb','bbb','ccc','ccc'],'EXTRA':[400,400,400,500,500,333,333]})
>>> df
   MONTREGL SINID EXTRA
0        10   aaa   400
1        10   aaa   400
2      2222   aaa   400
3        35   bbb   500
4       200   bbb   500
5        56   ccc   333
6      5555   ccc   333

我想MONTREGL对每个 groupby的列求和SINID...

所以我得到 2242 的 aaa 等等......我还想保留 column 的值EXTRA

这是预期的结果:

   MONTREGL SINID EXTRA
0      2242   aaa   400
1       235   bbb   500
2      5611   ccc   333

提前感谢您的帮助!

4

4 回答 4

9

我最终使用了这个脚本:

dff = df.groupby(["SINID","EXTRA"]).MONTREGL.sum().reset_index()

它适用于这个测试和生产。

于 2019-05-30T09:11:28.587 回答
3

下面的代码适用于您的示例:

df1 = df.groupby(["SINID"]).sum()
df1['EXTRA'] = df.groupby(["SINID"]).mean()['EXTRA']

结果 :

       MONTREGL  EXTRA
SINID                 
aaa        2242  400.0
bbb         235  500.0
ccc        5611  333.0
于 2019-05-29T13:26:21.227 回答
1

我知道这篇文章很旧,但这可能对其他人有帮助:

使用位置: df.loc[df['SINID'] == aaa].MONTREGL.sum()

使用 groupby: df.groupby('SINID')['MONTREGL'].sum()

以下链接中回答了类似的问题(查看 Alex Riley 的回复):

如何使用熊猫对与给定条件匹配的列中的值求和?

祝你好运,

于 2020-10-30T00:10:42.450 回答
0

我的建议是使用与其他列相关的条件过滤您的数据框,然后应用 sum 函数,

它是这样的。

import pandas as pd

df=pd.Dataframe({a:[1,2,3],b:[2001,2015,2019],c:[1,0,1]})

aux=df[df.c>0]

sa=aux.a.sum()

sb=aux.b.sum()

我的语法可能不正确(我没有运行代码)但它可能会起作用并引导您找到答案

祝你好运。

于 2019-05-29T13:16:14.940 回答