根据评论区的一位大佬给出的例子做了实验
这样可能会稍微简洁一些

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))