基于Pandas DataFrame中另一列的总和列

时间:2019-05-29 12:26:02

标签: python pandas dataframe

我有一个这样的熊猫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的每个分组汇总SINID列...

所以我得到2aa的aaa,依此类推...另外,我想保留列EXTRA的值。

这是预期的结果:

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

谢谢您的帮助!

4 个答案:

答案 0 :(得分:1)

下面的代码适合您的要求:

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

不客气:)

答案 1 :(得分:0)

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

它是这样的。

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[starts-with(@aria-describedby, 'ui-id-')]//span[@class='ui-button-text' and text()='Continue']"))).click()

from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC

import pandas as pd

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

aux=df[df.c>0]

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

祝你好运。

编辑:我只是阅读了您添加的其他信息,并且我认为您可以循环遍历要基于的值

答案 2 :(得分:0)

我最终使用了以下脚本:

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

它可以在此测试和生产中使用。

答案 3 :(得分:0)

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

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

使用分组依据: df.groupby('SINID')['MONTREGL'].sum()

在以下链接中回答了类似的问题(请检查Alex Riley的回答):

How do I sum values in a column that match a given condition using pandas?

祝你好运