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

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

https://www.nowcoder.com/practice/4d77709a0ea2482282ee86852fe32f06

import pandas as pd 
from datetime import timedelta
no = pd.read_csv('nowcoder.csv')
no['date'] = pd.to_datetime(no['date']).dt.date 
df = no[['user_id','date']].drop_duplicates() # 只取user_id和答题日期,并去重
df['rk'] = df.groupby('user_id')['date'].rank() #分用户对登录日期进行排名
df['diff'] = df['date'] - df['rk'].apply(lambda x:timedelta(x)) # 同一个用户同一次连续答题,会有一样的diff值
df['continue'] = df.groupby(['user_id','diff'])['date'].rank() # 对用户和diff同时分类后对日期做排名,得到当前日期是连续登录的第n天
result = df.groupby('user_id')['continue'].max() #也不需要groupby,但本题结果给的是分类的结果,因此这样操作。
print(result[result>=3])

这套题里最难的一题就是这个了,基本找不到思路。

全部评论

相关推荐

宇信外包 Java 7.5k
点赞 评论 收藏
转发
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务