python - 如何获得按其他列分组的几列的总和?
问题描述
我想要做的是将此 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 两列并获取计数和Python Pandas 多列分组,意味着另一个 - 没有 group by object,但这不起作用。所以如果有人可以帮助我。
解决方案
就像评论中提到的@Quang,您需要重置索引:
df.groupby(list(df.columns)[0:3]).sum().reset_index()
当您一次对多个列进行分组时,您会创建一个分层多索引,这就是您看到column_1
groups index的原因AA
。
输出:
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
推荐阅读
- python - 从另一个带有熊猫代码列的数据框中获取描述
- html - 使用 jasonplaceholder 的角度假 API,单击按钮后获取详细信息
- javascript - 如何在 React 中使用 Web 组件?
- calendar - gforth 从用户指定的日期获取日期名称
- ffmpeg - 为什么 FFmpeg 将 ARGB pix_format 中的 mov 解码并保存到 png 文件中,会出现颜色失真。?
- c++ - 初始化时类的对象和类的指针的区别
- vaadin - Vaadin 图表:选择应保持可见
- node.js - 我正在尝试将此加密加密和解密 js 代码转换为 Angular 项目的打字稿
- laravel - 如何在 JSON api 调用(Lazyload、Vuejs、Laravel)上应用过滤器组件
- c++ - 在 C++ 中从我的数据集中打印出训练集和测试集的内容