Pandas如何根据DataFrame指定列分组添加连续整数序列新列
Pandas 分组生成组内顺序递增值实现
初始数据
首先构造示例DataFrame:
import pandas as pd df = pd.DataFrame({'A':[3,5,2,5,4,2,5,2,3,1,4,1], 'B':['x','y','x','x','y','z','z','x','y','y','x','z']})
需求说明
为DataFrame新增列C,赋值规则:
- 按B列的不同取值分组
- 每组内的行保留原表中的先后顺序
- 组内从1开始依次赋值连续递增整数
预期最终效果:
A B C 0 3 x 1 1 5 y 1 2 2 x 2 3 5 x 3 4 4 y 2 5 2 z 1 6 5 z 2 7 2 x 4 8 3 y 3 9 1 y 4 10 4 x 5 11 1 z 3
实现代码
直接使用groupby配合cumcount方法即可,注意cumcount默认从0开始计数,需要+1调整起始值:
df['C'] = df.groupby('B').cumcount() + 1
逻辑说明
groupby('B')按B列值拆分分组,拆分过程不会改变原表行的相对顺序cumcount()会对每个分组内的行,按原顺序返回从0开始的递增值- 加1后即可满足从1开始计数的要求,运行结果和预期完全一致
内容的提问来源于stack exchange,提问作者HappyPy
相关产品推荐
相关产品推荐

