![](/img/trans.png)
[英]Calculate the sum of values based on another column value in pandas dataframe?
[英]Sum column based on another column in 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 10 aaa 400
2 2222 aaa 400
3 35 bbb 500
4 200 bbb 500
5 56 ccc 333
6 5555 ccc 333
我想按MONTREGL
為每個組對列MONTREGL
SINID
...
所以我得到 2242 為 aaa 等等......我還想保留列EXTRA
的值。
這是預期的結果:
MONTREGL SINID EXTRA
0 2242 aaa 400
1 235 bbb 500
2 5611 ccc 333
提前感謝您的幫助!
我最終使用了這個腳本:
dff = df.groupby(["SINID","EXTRA"]).MONTREGL.sum().reset_index()
它適用於本次測試和生產。
下面的代碼適用於您的示例:
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
我的建議是使用與其他列相關的條件過濾數據框,然后應用 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()
我的語法可能不正確(我沒有運行代碼)但它可能會起作用並引導您找到答案
祝你好運。
我知道這篇文章很舊,但這可能對其他人有幫助:
使用 loc: df.loc[df['SINID'] == aaa].MONTREGL.sum()
使用 groupby: df.groupby('SINID')['MONTREGL'].sum()
以下鏈接回答了類似的問題(查看 Alex Riley 的回復):
祝你好運,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.