题解 | #牛客网用户练习的平均次日留存率#

牛客网用户练习的平均次日留存率

https://www.nowcoder.com/practice/1f9e2b9be96b4b27a2476f8f12c5d29f

import pandas as pd 
from datetime import timedelta
data1=pd.read_csv('nowcoder.csv')
data1['date']=pd.to_datetime(data1['date']).dt.date#将时间列转换成datetime格式
data=pd.merge(data1,data1,on='user_id',suffixes=['_x','_y'])#syffixes:为合并后相同的列换名字
data['differ'] = data['date_x']-data['date_y']#计算时间差(这里不理解哇,按照道理不应该全是0?)
data=data.query('differ=="1 days"')
all_num = data1['user_id'].count()
again_num = data['user_id'].count()
print(round(again_num/all_num,2))

对于一开始全是0的解答:

在进行data1和data1的merge时,利用了笛卡尔积,得到的是组合

例如:原数据如下:

则合并后如下:

合并方式:对于on条件下相同的字段,进行组合(4×4+1×1+1×1=18)条条目。此时就可以理解,为什么列存在不为0的了

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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