我有一个用于用户参与的数据框(df),如下所示:-
每一行都是系统的一次登录。采用用户是指在至少 7 天内连续三天登录产品的用户。如何找到所有已采用用户的 user_ids?
输出是已采用用户的 user_ids 列表 -
user_list = ['1', '3']
最佳答案
首次使用floor
按天计算楼层,然后按每 3 行groupby
滚动
。但是存在需要数字的问题,因此日期时间转换为unix时间:
df['time_stamp'] = df['time_stamp'].dt.floor('d').astype(np.int64)
#sorting and remove duplicated days per users
df = df.sort_values(['user_id', 'time_stamp']).drop_duplicates()
a = df.groupby('user_id')['time_stamp'].rolling(window=3)
b = pd.to_timedelta((a.max()- a.min())).dt.days
print (b)
user_id
1 0 NaN
1 NaN
2 5.0
3 7.0
2 4 NaN
3 5 NaN
6 NaN
7 7.0
4 8 NaN
9 NaN
10 8.0
Name: time_stamp, dtype: float64
c = b[b == 7].index.get_level_values('user_id').tolist()
print (c)
[1, 3]
关于python - 在至少 7 天内连续三天登录该产品的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49346045/