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




全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务