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

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

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

from datetime import timedelta
import pandas as pd 
import numpy as np 

# 1.读取数据
df = pd.read_csv('nowcoder.csv', sep=',', encoding='utf8')

# 2.保留2021年12月的用户
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].dt.strftime('%Y-%m-%d')
df['date'] = pd.to_datetime(df['date'])
df = df.loc[(df['date'].dt.year == 2021) & (df['date'].dt.month == 12)]

# 3.求连续练习三天以上的用户
# 3.1 排序
df.sort_values(by=['user_id', 'date'], ascending=True, inplace=True)
# 3.2 去重
df.drop_duplicates(subset=['user_id', 'date'], inplace=True)
# 3.3  分组求连续三天
def count_max_day(x):
    max_day, count_day =1, 1 # 最大连续天数,连续天数
    
	# 循环遍历每一天
    for idx, val in x.iterrows():
        now = val['date'] + timedelta(days=1)
        # 最大能有多少天
        for i in range(len(val)):
            if x['date'].isin([now]).any():
                count_day += 1
                now = now + timedelta(days=1)
            else:
                break
        # 求最大连续天数
        max_day = max(max_day, count_day)
        count_day = 1
    return max_day
data = df.groupby(by=['user_id']).apply(count_max_day)
print(data[data >= 3])

全部评论

相关推荐

2025-12-19 19:02
西安交通大学 Java
程序员牛肉:双九,而且还是西交这种比较好的985九没必要再投日常了。你投中小厂,人家会觉得你学历这么顶还面试肯定是海投的,过了你也不去。所以不约你了。 直接准备暑期实习就好,现在你可以面试。但是目的不再是去日常实习了,而是熟悉面试节奏。 后续把精力放到八股,算法和AI知识上。抽空把自己这两个项目换了,怎么选项目可以看看我主页写的文章。 你学历不错的,不要焦虑
那些拿到大厂offer的...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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