簡體   English   中英

基於 Pandas DataFrame 中另一列的 Sum 列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM