python - 在至少 7 天内连续三天登录该产品的用户

标签 python pandas numpy scikit-learn

我有一个用于用户参与的数据框(df),如下所示:-

<表类=“s-表”> <标题> time_stamp user_id <正文> 2013-01-01 10:05:23 1 2013-01-03 16:35:23 1 2013-01-06 11:06:35 1 2013-01-10 12:05:43 1 2013-01-11 13:32:12 2 2013-01-04 16:26:34 3 2013-01-05 14:02:51 3 2013-01-11 18:35:53 3 2013-01-04 12:26:34 4 2013-01-05 13:31:11 4 2013-01-12 17:35:52 4

每一行都是系统的一次登录。采用用户是指在至少 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/

相关文章:

python - SQLAlchemy 中的用户定义函数创建

python - Pandas 没有正确计算行数

python - 在 Python 中从转换后的现有列创建新列

python - 展平/删除分层列标题

python - 无法连接两个 numpy 数组

python - 独立函数中的`multiprocessing.Pool`

python - 在 Web 应用程序中使用 Python 语言环境或同等语言环境?

python - 傅立叶变换 opencv python FFT & DFT

python - 在不使用 np.tile() 或创建新向量的情况下将向量扩展 n 次以适应更大的矩阵

python - 使用最大日期字段和收入字段按类别进行新列计算