如何获得按其他列分组的几列之和?

问题描述 投票:0回答:1

我想做的就是将此SQL代码复制到Python:

select column_1, column_2, column_3, 
       sum(column_4) as sum_column_4, sum(column_5) as sum_column_5
from df 
group by 1,2,3;

换句话说,我需要创建此数据框:

column_1   column_2   colunn_3   column_4   column_5
AA         BB         CC         5          3
AA         BB         CC         5          0
AA         BB         CC         7          3
AA         DD         EE         5          2
AA         DD         EE         7          1
DD         EE         FF         2          8
DD         EE         FF         1          0

看起来像这样:

column_1   column_2   colunn_3   sum_column_4   sum_column_5
AA         BB         CC         17             6
AA         DD         EE         12             3
DD         EE         FF         3              8

另外,我试图使这一过程尽可能简单,因为我实际上有很多列。我需要有一个新的Pandas数据框作为输出。所以这就是我尝试过的:

df.groupby(list(df.columns)[0:3]).sum()

几乎快到了,问题在于输出变得很奇怪,就像:

column_1   column_2   colunn_3   sum_column_4   sum_column_5
AA         BB         CC         17             6
           DD         EE         12             3
DD         EE         FF         3              8

[我正在尝试其他文章中看到的不同内容,例如Pandas DataFrame Groupby two columns and get countsPython Pandas group by multiple columns, mean of another - no group by object,但这没有用。因此,如果有人可以帮助我。

python pandas group-by
1个回答
0
投票
df.groupby(list(df.columns)[0:3]).sum().reset_index()

输出:

  column_1 column_2 colunn_3  column_4  column_5
0       AA       BB       CC        17         6
1       AA       DD       EE        12         3
2       DD       EE       FF         3         8
© www.soinside.com 2019 - 2024. All rights reserved.