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

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

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

根据评论区的一位大佬给出的例子做了实验
这样可能会稍微简洁一些

import pandas as pd

nowcoder=pd.read_csv('nowcoder.csv')
# 去重
nowcoder=nowcoder.drop_duplicates(['user_id','date'])[['user_id','date']]
nowcoder.date=pd.to_datetime(nowcoder.date).dt.date
# 得到排名,然后转化为日期,然后将日期与排名相减,如果是连续的,得到的差是相同的
nowcoder['newrank']=nowcoder.date-pd.to_datetime(nowcoder.groupby(['user_id'])['date'].rank(),unit='d').dt.date
# 用用户id和差做分组然后计数,这个计数代表连续天数
res=nowcoder.groupby(['user_id','newrank'])['date'].count()
# 筛选超过2的
print(res[res>=3].reset_index('newrank',drop=True))
全部评论
有一个小问题,去重那个步骤的两行代码应该换一下顺序吧,这个代码得到的最后答案和给出的答案不一样,但是系统判断的还是过了。 我理解的去重应该是同一用户同一天练习了多次就应该去重,上面的代码是同一时刻才去重。
5 回复 分享
发布于 2023-02-26 21:50 北京
我的疑惑是最后只筛选超过2的,不是有可能出现重复数据的情况,比如这周连续练习了3天,下周却连续练习了5天
1 回复 分享
发布于 2023-03-10 11:10 广东
先转日期,再去重
点赞 回复 分享
发布于 2023-06-06 16:31 四川
运行结果与题目答案不同,但可通过,系统是不是有误?
点赞 回复 分享
发布于 2023-03-28 06:58 山东

相关推荐

04-10 11:37
黑河学院 运营
ouyouy:学校全责
点赞 评论 收藏
分享
03-19 09:58
河海大学 Java
最喜欢春天的奇亚籽很...:同学,是小红书不是小哄书,一眼就能看到的错误
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
25
1
分享

创作者周榜

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