题解 | #牛客网连续练习题目3天及以上的用户#
牛客网连续练习题目3天及以上的用户
https://www.nowcoder.com/practice/4d77709a0ea2482282ee86852fe32f06
根据评论区的一位大佬给出的例子做了实验
这样可能会稍微简洁一些
import pandas as pd
nowcoder=pd.read_csv('nowcoder.csv')
# 去重
nowcoder=nowcoder.drop_duplicates(['user_id','date'])[['user_id','date']]
nowcoder.date=pd.to_datetime(nowcoder.date).dt.date
# 得到排名,然后转化为日期,然后将日期与排名相减,如果是连续的,得到的差是相同的
nowcoder['newrank']=nowcoder.date-pd.to_datetime(nowcoder.groupby(['user_id'])['date'].rank(),unit='d').dt.date
# 用用户id和差做分组然后计数,这个计数代表连续天数
res=nowcoder.groupby(['user_id','newrank'])['date'].count()
# 筛选超过2的
print(res[res>=3].reset_index('newrank',drop=True))
查看23道真题和解析