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
我想对每个groupbySINID
的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())
我得到的错误是值的长度与索引的长度不匹配