题解 | #牛客网连续练习题目3天及以上的用户#
牛客网连续练习题目3天及以上的用户
https://www.nowcoder.com/practice/4d77709a0ea2482282ee86852fe32f06
#1-读数据 import pandas as pd nowcoder = pd.read_csv('nowcoder.csv') #2-分列并取出“日期” nowcoder['date_2'] = nowcoder['date'].str.split(' ').str[0] #3-删除原始列 nowcoder = nowcoder.drop(['question_id', 'result', 'date'], axis = 1) #4-玩家可能一天登录多次,进行去重 nowcoder.drop_duplicates(inplace = True) #5-转换为时间数据类型 nowcoder['date_2'] = pd.to_datetime(nowcoder['date_2']) #6-分组排序-按照日期 nowcoder['辅助列'] = nowcoder['date_2'].groupby(nowcoder['user_id']).rank() #7-计算差值【用户连续登录的情况下,每次相减的结果相同,即'date_sub'相同】---------------------------------重点 nowcoder['date_sub'] = nowcoder['date_2'] - pd.to_timedelta(nowcoder['辅助列'], unit = 'd') #8-分组统计 data = nowcoder.groupby(['user_id', 'date_sub']).count() #9-删除其中的一个索引 data = data.reset_index(level = 'date_sub', drop = True) #10-删除列 data = data.drop('date_2', axis = 1) #11-筛选 data = data[data['辅助列'] >= 3] #12-改名 data = data.rename(columns = {'辅助列': 'question_id'}) print(data['question_id'])