Python 基于数据帧中的另一列求和列

Python 基于数据帧中的另一列求和列,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样一个熊猫数据框: >>> 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 1

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

>>> 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
我想对每个groupby
SINID
MONTREGL
列求和

所以我拿到了2242的aaa等等。。。我还想保留列
EXTRA
的值

这是预期的结果:

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

提前谢谢你的帮助

我的建议是使用与其他列相关的条件筛选数据帧,然后应用求和函数

事情是这样的

将熊猫作为pd导入

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

aux=df[df.c>0]

sa=aux.a.sum()

sb=aux.b.sum()

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


祝您好运。

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

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

我最终使用了以下脚本:

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

这篇文章在测试和生产中都很有用。

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

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

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

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


祝您好运,

您是否尝试过使用
groupby
print(df.groupby(by=[“SINID”])[“MONTREGL”].sum())
?您是否可以执行
打印(df.info())
并共享结果打印@yatu之前提出的解决方案,但尚未投入生产
dfd=df.groupby('SINID')。MONTREGL.sum()。reset(index()。分配(EXTRA=df.EXTRA.unique())
我得到的错误是值的长度与索引的长度不匹配