python - 变换计数连续整数
问题描述
我有一个像
id
1
2
3
4
7
8
我希望我的输出为:
id count
1 4
2 4
3 4
4 4
7 2
8 2
提前致谢
解决方案
Series
为连续整数创建by Series.diff
,比较不等于1
bySeries.ne
并添加累积总和 by Series.cumsum
:
s = df['id'].diff().ne(1).cumsum()
然后Series.map
使用Series.value_counts
:
df['count'] = s.map(s.value_counts())
或GroupBy.transform
与GroupBy.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
推荐阅读
- javascript - 功能结束后打印内容
- angular - 如何使用 Angular 7 对 textarea 内容进行颜色编码?
- angular - 类型断言从 Angular Http 客户端返回的数据
- python - 如何在 python 中更好地组织你的代码?
- ionic4 - 如何遍历包含对象的数组并进行比较
- r - R 建模包是否将字符变量视为无序因子?
- common-lisp - Common Lisp 中是否有任何线程安全的哈希表实现?
- python - 我的代码没有在 IntelliJ python 中返回。为什么不回来?我知道有一个基本原因
- android - ios中的标签栏位于屏幕顶部
- python - Python从复杂字典创建子字典