熊猫有条件聚合和无条件聚合在一起

时间:2019-10-31 21:26:57

标签: python pandas dataframe aggregate-functions aggregation

我是一名SQL重度用户,并且是Python和Pandas的新手。我有一个DataFrame。

import pandas as pd

data=[[1,100,'a'],[1,200,'b'],[2,300,'a'],[2,400,'a'],[3,500,'b'],[3,600,'a'],[3,700,'b']]

df=pd.DataFrame(data,columns=['Group','Amount','Condition'])

我可以一步计算条件总和和“常规”总和吗?

基本上,在SQL中,它将是这样。

select [Group]
,sum([Amount]) as Amount
,sum(case when [Condition]=’a’ then [Amount] end) as Conditional_Sum
from df
group by [Group]

但是在熊猫中,我将它们分为几个步骤。

对于“常规”总和,我使用

df1=df.groupby('Group')['Amount'].sum().reset_index()

对于条件和,我使用

df2=df.groupby('Group').apply(lambda x: x[x['Condition']=='a']['Amount'].sum()).to_frame(name='Conditional_Sum')
df2.reset_index(inplace=True)

然后将df1和df2合并。我可以只执行一个步骤吗?

编辑:要澄清一下,是否有一种方法可以一步一步在数据框下方创建内容?

   Group  Amount  Conditional_Sum
0      1     300              100
1      2     700              700
2      3    1800              600

1 个答案:

答案 0 :(得分:1)

您可以使用groupby应用并使用一些列创建系列

mouseover