Python如何为Pandas DataFrame指定列重复值新增出现次序标记列
实现方法
你可以直接使用pandas的groupby + cumcount组合语法完成需求,步骤如下:
- 首先构造测试用的DataFrame(如果已有目标DataFrame可跳过这步)
import pandas as pd df = pd.DataFrame({ 'v1': [1,2,2,3,4,5], 'v2': [2,3,1,4,5,3] })
- 新增
dup标记列
# cumcount默认从0开始计数,加1后就得到从1开始的同值出现次序 df['dup'] = df.groupby('v1').cumcount() + 1
- 结果验证
执行完上述代码后打印df,即可得到你需要的输出:
v1 v2 dup 0 1 2 1 1 2 3 1 2 2 1 2 3 3 4 1 4 4 5 1 5 5 3 1
原理解释
groupby('v1')会将v1列取值相同的行划分为同一组cumcount()会保留原始行顺序,对每个分组内的行从0开始依次计数- 最终计数结果加1,就得到了从1开始的同值出现顺序标记,即使某个值重复出现N次,也会按1到N依次标记。
内容的提问来源于stack exchange,提问作者EGM8686
相关产品推荐
相关产品推荐

