首页 > 解决方案 > 变换计数连续整数

问题描述

我有一个像

id
1
2
3
4
7
8

我希望我的输出为:

id   count
1     4
2     4
3     4
4     4
7     2
8     2

提前致谢

标签: pythonpandascounttransform

解决方案


Series为连续整数创建by Series.diff,比较不等于1bySeries.ne并添加累积总和 by Series.cumsum

s = df['id'].diff().ne(1).cumsum()

然后Series.map使用Series.value_counts

df['count'] = s.map(s.value_counts())

GroupBy.transformGroupBy.size

df['count'] = s.groupby(s).transform('size') 

print (df)
   id  count
0   1      4
1   2      4
2   3      4
3   4      4
4   7      2
5   8      2

推荐阅读