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

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

本文详解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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。