步骤:
1.date转成年月日格式
2.以用户分组按日期排序,为避免用户同一天内多次登录,排名方法选用dense
3.用日期减去排名即可得到连续登录的第一天日期
4.通过对用户、第一天连续登录的日期分组并对数据的记录进行计数即可得到用户持续登录的天数
5.再通过对用户分组,得到用户持续登录的天数的最大值,筛选出大于等于3的用户
nowcoder['date'] = pd.to_datetime(nowcoder['date'],format='%Y-%m-%d').dt.date nowcoder['ranking'] = nowcoder.groupby('user_id')['date'].rank(method='dense') nowcoder['first_last_date'] = nowcoder['date'] - pd.to_timedelta(nowcoder['ranking'],unit='d') df = nowcoder.groupby(['user_id','first_last_date'])['first_last_date'].count().groupby('user_id').max() df = df[df>=3] print(df)