题解 | #牛客网连续练习题目3天及以上的用户#

牛客网连续练习题目3天及以上的用户

https://www.nowcoder.com/practice/4d77709a0ea2482282ee86852fe32f06

def countday(t):
    s = 0
    f = 0
    for i in range(len(t)):
        if i < len(t)-1:
            if t[i+1] == (t[i] + 1):
                s = s+1
                f = max(f, s)
            else:
                s = 0
    return f+1

import pandas as pd 
pf = pd.read_csv('nowcoder.csv')[['user_id','date']]  //读表格
pf['date'] = pd.to_datetime(pf['date'],format="%Y-%m-%d").dt.date     //转换日期
pf['date'] = pf['date'].astype('str').str[8:]       //截取日
pf['date'] = pd.to_numeric(pf['date'])             //日转换成数字
pf = pf.drop_duplicates()                          //去重
pid = pf['user_id'].drop_duplicates()              //id去重,下面用来遍历
list1 = []                             
for i in pid.to_list():                            //遍历id                  
    t = pf[pf['user_id']==i]['date'].to_list()     //把遍历到的id的日期读出来转换成列表
    if len(t)>=3:                                  //判断是否大于三天
        day = countday(t)                          //计算连续登录天数
        if  day >=3:                               
            for _ in range(day):                   //因为答案要求的是一个统计输出,所以这里多添加几行
                list1.append(str(i))               //把符合连续登陆天数的id存到列表里
pp = pd.DataFrame(list1,columns=['user_id'])        //把列表转换成DateFrame
print(pp.groupby('user_id')['user_id'].count())     //按题目要求统计输出

全部评论

相关推荐

10-10 16:30
济宁学院 Java
一表renzha:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
救救孩子的秋招吧:快手纯**公司,暑假实习面试官那个女的,板着个脸像我欠他钱似的,后面直接拒了,我同学去了两个月直呼**公司,秋招也不可能会回去了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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