pandas DataFrame groupby分组聚合与reset_index重置索引详解
本文详解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操作方法的全部内容已分享完毕,希望能为您提供参考,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









