根据评论区的一位大佬给出的例子做了实验
这样可能会稍微简洁一些
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))