如何在Pandas DataFrame中统计列值的累计出现次数
解决Pandas中记录值累计出现次数的问题
你需要的是对目标列中每个值按出现顺序生成累计序号,用Pandas的groupby配合cumcount()就能实现,具体步骤如下:
- 构造示例数据(模拟你的场景):
import pandas as pd df = pd.DataFrame({ 'col_A': ['test1', 'test2', 'test1', 'test2', 'test2', 'test3'], 'col_B': ['a', 'b', 'c', 'd', 'e', 'f'] })
- 生成累计出现次数列:
# cumcount()默认从0开始计数,加1转为从1开始的序号 df['col_C'] = df.groupby('col_A').cumcount() + 1
- 最终结果:
col_A col_B col_C 0 test1 a 1 1 test2 b 1 2 test1 c 2 3 test2 d 2 4 test2 e 3 5 test3 f 1
补充说明
value_counts()是统计每个值的总出现次数,无法追踪单次出现的顺序,所以不适用这个场景。cumcount()会对每个分组内的行按原始顺序依次计数,加1后正好匹配你需要的“第几次出现”的序号。
内容的提问来源于stack exchange,提问作者Ashim Mohanty
相关产品推荐
相关产品推荐

