如何基于Pandas DataFrame的两个分类列生成递增计数列?
如何在Pandas中按(username, phase)分组生成递增计数列
你需要给包含username和phase列的DataFrame新增count列,该列数值为每个用户在对应阶段内的出现次数(从1开始递增),示例数据如下:
username phase count 0 andrew 1 1 1 andrew 1 2 2 alex 1 1 3 alex 2 1 4 andrew 1 3 5 cindy 3 1 6 alex 2 2
高效实现方案
直接使用Pandas原生的groupby+cumcount()方法即可,这是性能最优的方式,无需手动循环:
import pandas as pd # 假设你的DataFrame名为df df['count'] = df.groupby(['username', 'phase']).cumcount() + 1
逻辑说明
groupby(['username', 'phase']):按「用户名+阶段」的组合进行分组,确保每个分组仅包含同一用户在同一阶段的所有行cumcount():为每个分组内的行生成从0开始的连续序号,加1后就得到了从1开始的计数,完全匹配示例需求
这个方法基于Pandas内部优化的向量化操作,处理百万级别的数据也能保持高效。
内容的提问来源于stack exchange,提问作者nerd
相关产品推荐
相关产品推荐

