如何为Pandas DataFrame的Key列唯一值生成递增计数器列
为DataFrame的重复Key值创建递增计数列
问题描述
现有包含Key列的DataFrame,数据如下:
Key ---- 1234 1234 1234 5678 6789 7890 7890 6789 2345
需要新增名为Counter的列,对每个Key的出现顺序进行递增计数,最终得到如下结果:
Key Counter ---- ------- 1234 1 1234 2 1234 3 5678 1 6789 1 7890 1 7890 2 6789 2 2345 1
注:无需统计每个Key的总出现次数,该需求可通过value_counts()或groupby('Key').count()实现,本次仅关注按出现顺序的递增计数。
解决方案
使用pandas的groupby()结合cumcount()方法即可实现:
import pandas as pd # 构造示例DataFrame(若已有现成DataFrame可跳过此步) data = {'Key': [1234, 1234, 1234, 5678, 6789, 7890, 7890, 6789, 2345]} df = pd.DataFrame(data) # 生成Counter列 df['Counter'] = df.groupby('Key').cumcount() + 1
原理说明
groupby('Key'):将DataFrame按Key列的唯一值分组,把相同Key的行归为一组。cumcount():对每组内的行从0开始依次计数,返回每组内的位置序号。- 加1操作:将计数从0起始改为1起始,匹配需求中的计数格式。
执行上述代码后,df将包含目标Counter列,结果与预期完全一致。
内容的提问来源于stack exchange,提问作者smichael_44
相关产品推荐
相关产品推荐

