题解 | #牛客网连续练习题目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])
这套题里最难的一题就是这个了,基本找不到思路。