pandas DataFrame groupby分组聚合与reset_index重置索引详解

周叙
周叙
发布时间:2026-10-13 | 3人浏览过
原创

本文详解pandas中DataFrame的groupby分组聚合操作,涵盖Splitting、Applying、Combining三步流程。通过代码示例展示按单列或多列分组求和、求最值的方法,并重点解析reset_index()对输出结果索引结构的影响及列名提取差异,帮助开发者掌握数据预处理中的分组运算技巧。

在数据预处理环节,常会遇到如下场景:数据集中存在同一个key对应多组数据的情况,此时需要针对每个key分别执行相同的运算操作。

DataFrame提供了group by操作,该操作通常包含以下一个或多个步骤:

l (Splitting)依据特定规则将数据划分为不同的组;

l (Applying)对每组数据分别执行指定的函数;

l (Combining)将处理结果组合回一个数据结构中;

在DataFrame中实现groupby的具体用法如下:

# -*- coding: UTF-8 -*-
import pandas as pd
df = pd.DataFrame([{'col1':'a', 'col2':1, 'col3':'aa'}, {'col1':'b', 'col2':2, 'col3':'bb'}, {'col1':'c', 'col2':3, 'col3':'cc'}, {'col1':'a', 'col2':44, 'col3':'aa'}])
print df
# 按col1分组并按col2求和
print df.groupby(by='col1').agg({'col2':sum}).reset_index()
# 按col1分组并按col2求最值
print df.groupby(by='col1').agg({'col2':['max', 'min']}).reset_index()
# 按col1 ,col3分组并按col2求和
print df.groupby(by=['col1', 'col3']).agg({'col2':sum}).reset_index()

执行上述代码后的输出结果为:

 col1 col2 col3 
0  a   1  aa 
1  b   2  bb 
2  c   3  cc 
3  a  44  aa 
 col1 col2 
0  a  45 
1  b   2 
2  c   3 
 col1 col2   
    max min 
0  a  44  1 
1  b  2  2 
2  c  3  3 
 col1 col3 col2 
0  a  aa  45 
1  b  bb   2 
2  c  cc   3 

需要注意以下事项:

代码中调用了reset_index()函数,若不使用该函数,输出的结果格式将有所不同。

   col2
col1   
a    45
b    2
c    3
   col2  
   max min
col1     
a   44  1
b    2  2
c    3  3
      col2
col1 col3   
a  aa   45
b  bb    2
c  cc    3

对比上述两种输出结果存在一定差异,具体区别暂不明确,但第二种输出结果无法直接通过df['col1']来提取第一列数据。具体原因尚不清楚,如果您对pandas有深入理解或知晓原因,欢迎在评论区留言分享。

以上关于pandas数据预处理中DataFrame的groupby操作方法的全部内容已分享完毕,希望能为您提供参考,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表