小笨蛋看过来 | #牛客网连续练习题目3天及以上的用户#
牛客网连续练习题目3天及以上的用户
https://www.nowcoder.com/practice/4d77709a0ea2482282ee86852fe32f06
import pandas as pd from datetime import timedelta nowcoder = pd.read_csv("nowcoder.csv")
# 转时间 nowcoder["date"] = pd.to_datetime(nowcoder["date"])
# 新建年月列date1 nowcoder["date1"] = nowcoder["date"].dt.strftime("%Y-%m") print(nowcoder)
# 筛选时间在2021年12月的数据于新表data data = nowcoder[nowcoder["date1"] == "2021-12"]
# 新建年月日列date2 data["date2"] = pd.to_datetime(data["date"].dt.date)
# 按照天排序,使用rank同一天还是同一天 data["rk"] = pd.to_timedelta(data.groupby(["user_id"]).date2.rank(), unit="d")
# 将日期与排名相减,如果是连续的,得到的差是相同的,相同的值出现几次就连续几天 data["cha"] = data["date2"] - data["rk"]
# 先按照user_id,cha排序统计各个值的次数在按照user_id排序统计rk列的最大值,如果不按cha排序就会有重复值3760 3 data1 = data.groupby(["user_id", 'cha']).count().groupby("user_id").rk.max() # 输出最大值大于等于3 print(data1[data1>=3])