题解 | #牛客网连续练习题目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'])

