题解 | #牛客网连续练习题目3天及以上的用户#
牛客网连续练习题目3天及以上的用户
https://www.nowcoder.com/practice/4d77709a0ea2482282ee86852fe32f06
import pandas as pd import datetime pd.set_option('display.width', 300) pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) data = pd.read_csv('nowcoder.csv', sep = ',', dtype = object) data['date'] = data['date'].apply(lambda x: x.split()[0].replace('/', '-')) data['date'] = data['date'].apply(lambda x: datetime.datetime.strptime(x, '%Y-%m-%d').date()) # 存放日期结果 res = {} for i in (data['user_id'].unique()): # 登录天数标识 login = 1 # 存放最大登录天数标识 login_list = [] # 每个客户号对应的最小练习时间 min_date = data[data['user_id'] == i]['date'].min() for j in range(len(data[data['user_id'] == i]['date'].unique())): if min_date + pd.Timedelta(days = j + 1) in data[data['user_id'] == i]['date'].unique(): login += 1 else: login_list.append(login) login = 1 max_login = max(login_list) if max_login >= 3: res[i] = max_login data = pd.DataFrame(columns=['user_id', 'count']) for v,k in res.items(): data.loc[len(data)] = {'user_id': v, 'count': k} print(data.groupby('user_id').max()['count'])