首页 >后端开发 >Python教程 >如何有效地向 Pandas 中的分组数据添加顺序计数器列?

如何有效地向 Pandas 中的分组数据添加顺序计数器列?

Linda Hamilton
Linda Hamilton原创
2024-12-24 14:04:15892浏览

How to Efficiently Add a Sequential Counter Column to Grouped Data in Pandas?

将顺序计数器列添加到 Pandas DataFrame 中的组

在数据整理的上下文中,有一个常见任务是添加顺序计数器pandas 数据框中的列到组。一种方法是使用回调函数,如您所演示的:

def callback(x):
    x['seq'] = range(1, x.shape[0] + 1)
    return x

虽然此方法有效,但它可能很麻烦并且需要定义一个单独的函数。更简洁和优雅的解决方案是利用 cumcount() 方法:

df.groupby(['c1', 'c2']).cumcount()

此方法计算每个组的累积计数,有效地为组中的每一行分配一个序号。例如,考虑以下数据框:

index c1 c2 v1
0 A X 3
1 A X 5
2 A Y 7
3 A Y 1
4 B X 3
5 B X 1
6 B X 3
7 B Y 1
8 C X 7
9 C Y 4
10 C Y 1
11 C Y 6

将 cumcount() 应用于此数据框,按 c1 和 c2 分组,将生成:

index c1 c2 v1 seq
0 A X 3 1
1 A X 5 2
2 A Y 7 1
3 A Y 1 2
4 B X 3 1
5 B X 1 2
6 B X 3 3
7 B Y 1 1
8 C X 7 1
9 C Y 4 1
10 C Y 1 2
11 C Y 6 3

改为从 1 开始排序为 0,只需在 cumcount() 结果上加 1:

df.groupby(['c1', 'c2']).cumcount() + 1

以上是如何有效地向 Pandas 中的分组数据添加顺序计数器列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn