看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在一个每日签到业务中,鼓励用户连续打卡,需要对部分连续的数据标记序数。比如,011101100,将连续的111,标记为123。
标记完后,最终计可算出用户连续打卡的记录。
源数据,1 表示当日打卡签到一次。
import pandas as pd
s = pd.Series([1,0,1,1,1,0,0,1,1,1])
s
'''
0 1
1 0
2 1
3 1
4 1
5 0
6 0
7 1
8 1
9 1
dtype: int64
'''
解决代码:
s * (s.groupby((s != s.shift()).cumsum()).cumcount() + 1)
'''
0 1
1 0
2 1
3 2
4 3
5 0
6 0
7 1
8 2
9 3
dtype: int64
'''
可以看到用户有两个连续打卡三天的记录。
更新时间:Aug. 18, 2024, 3:39 p.m. 标签:pandas python 计数