题解 | 牛客网连续练习题目3天及以上的用户

# 导入库
import pandas as pd
import datetime as dt
# 导入数据
data = pd.read_csv('nowcoder.csv')
# 去掉日期的时间
data['date'] = pd.to_datetime(data['date']).dt.date
# 计算每个用户在不同日期的排名,并将排名转换为datetime格式(单位为天),方便后续与日期求差
data['rank'] = pd.to_timedelta(data.groupby('user_id')['date'].rank(), unit='d')
# 日期与排名求差,相等值的即为连续登录
data['diff']  = data['date']  - data['rank']
# 统计各用户连续登录次数
con_user = data.groupby(['user_id', 'diff'])['date'].count().reset_index(name='question_id')
# 筛选大于3的登录天数
con_user = con_user[con_user['question_id'] >= 3]
# 输出连续登录天数大于3的各用户最大登录天数
print(con_user.reset_index().groupby('user_id')['question_id'].max()) # 聚合函数聚合后生成的列默认名为被聚合的列,用例中是以question_id来聚合,就将聚合列重命名为question_id,为了显示通过

根据评论区大佬思路自己复刻了一遍,已理解代码逻辑,后续还需多练习才能根据需求自己写出代码!

全部评论

相关推荐

被子有点短:有了实习后会发现有实习也没用
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务