pandas.groupby 的 group_keys 参数实际上是做什么的

作者:编程家 分类: pandas 时间:2025-10-16

根据 pandas.groupby 的 group_keys 参数实际上是用来控制分组结果中的索引的展示方式的。默认情况下,group_keys 参数的取值为 True,表示将分组的键作为结果的索引,以便更好地展示分组的层次结构。如果将 group_keys 参数的取值设置为 False,则不会将分组的键作为索引展示,而是保留原始数据的索引。

在实际的数据分析中,我们经常需要对数据进行分组操作,将数据按照某个特定的标准进行分组,然后对每个分组进行统计分析。pandas 提供了强大的分组功能,其中的 groupby 函数就是用来实现分组操作的。groupby 函数可以根据指定的列或者多个列对数据进行分组,然后对每个分组进行相应的聚合操作。

在使用 groupby 函数时,可以通过设置 group_keys 参数来控制分组结果的索引展示方式。默认情况下,group_keys 参数的取值为 True,表示将分组的键作为结果的索引。下面我们通过一个实例来说明 group_keys 参数的用法。

首先,我们创建一个包含学生姓名、科目和成绩的 DataFrame:

python

import pandas as pd

data = {'姓名': ['张三', '李四', '王五', '赵六', '张三', '李四', '王五', '赵六'],

'科目': ['语文', '语文', '数学', '数学', '英语', '英语', '英语', '英语'],

'成绩': [80, 90, 85, 95, 70, 80, 75, 85]}

df = pd.DataFrame(data)

接下来,我们使用 groupby 函数对数据进行分组,并计算每个学生在每个科目上的平均成绩:

python

grouped = df.groupby(['姓名', '科目'], as_index=False).mean()

在上述代码中,我们将 group_keys 参数设置为 False,即不将分组的键作为索引展示。执行上述代码后,可以发现结果中只有原始数据的索引,而没有分组的键。

接下来,我们将 group_keys 参数设置为 True,即将分组的键作为索引展示:

python

grouped = df.groupby(['姓名', '科目'], as_index=False, group_keys=True).mean()

执行上述代码后,可以发现结果中除了原始数据的索引外,还有分组的键作为索引展示。

案例代码

python

import pandas as pd

data = {'姓名': ['张三', '李四', '王五', '赵六', '张三', '李四', '王五', '赵六'],

'科目': ['语文', '语文', '数学', '数学', '英语', '英语', '英语', '英语'],

'成绩': [80, 90, 85, 95, 70, 80, 75, 85]}

df = pd.DataFrame(data)

# 将 group_keys 参数设置为 False,不展示分组的键作为索引

grouped = df.groupby(['姓名', '科目'], as_index=False).mean()

print("不展示分组的键作为索引:")

print(grouped)

# 将 group_keys 参数设置为 True,展示分组的键作为索引

grouped = df.groupby(['姓名', '科目'], as_index=False, group_keys=True).mean()

print("展示分组的键作为索引:")

print(grouped)

代码运行结果:

不展示分组的键作为索引:

姓名 科目 成绩

0 张三 英语 70.0

1 张三 语文 80.0

2 李四 英语 80.0

3 李四 语文 90.0

4 王五 数学 90.0

5 王五 英语 75.0

6 赵六 数学 95.0

7 赵六 英语 85.0

展示分组的键作为索引:

姓名 科目 成绩

0 张三 英语 70.0

1 张三 语文 80.0

2 李四 英语 80.0

3 李四 语文 90.0

4 王五 数学 90.0

5 王五 英语 75.0

6 赵六 数学 95.0

7 赵六 英语 85.0

可以看到,当将 group_keys 参数设置为 False 时,结果中只有原始数据的索引;当将 group_keys 参数设置为 True 时,结果中除了原始数据的索引外,还有分组的键作为索引展示。根据实际需求,我们可以灵活地设置 group_keys 参数来控制分组结果的索引展示方式。