如何为Pandas DataFrame的列添加累计计数字段?
实现累计计数列的方法
要给DataFrame新增col2列,记录col1中每个值的累计出现次数,可以用Pandas的groupby结合cumcount()方法实现,步骤如下:
代码实现
首先是创建原DataFrame的代码:
import numpy as np import pandas as pd ds = {"col1":[1,2,3,2,2,2,3,4,1,0,0,0,0,0,1,2,3,5]} df = pd.DataFrame(data=ds)
然后新增col2列(生成从1开始的累计计数):
df['col2'] = df.groupby('col1').cumcount() + 1
输出结果
执行print(df)后会得到:
col1 col2 0 1 1 1 2 1 2 3 1 3 2 2 4 2 3 5 2 4 6 3 2 7 4 1 8 1 2 9 0 1 10 0 2 11 0 3 12 0 4 13 0 5 14 1 3 15 2 5 16 3 3 17 5 1
原理说明
df.groupby('col1'):将DataFrame按col1的取值分组,相同值的行被归为同一组。cumcount():对每个分组内的行从0开始依次计数,加1后得到从1开始的累计出现次数,完全匹配需求。
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

