我有一个Pandas DataFrame,thisIsTheDate
,如下所示:
df
我正在尝试在4天窗口内的两个不同日期找到用户访问过的user_id, date_of_visit
1, 1/5/12
1, 1/6/12
2, 1/6/12
2, 1/11/12
2, 1/27/12
。因此,上面的正确输出只是user_id
。
从相关问题来看,我有:
[1]
上述代码的问题在于它没有解决用户在同一天访问过多次的可能性。如果我有:
df.groupby('user_id').filter(lambda x : x.set_index('date_of_visit').rolling('4d').count().gt(1).any()).user_id.unique()
上面的代码会输出user_id, date_of_visit
1, 1/5/12
1, 1/5/12
,因为用户1在四天的时间内访问了两次。但是,我只想要在4天窗口内的两个不同日期访问过的用户。因此,用户1 不应包含在输出中。
知道如何修改以强制执行此约束吗?
谢谢!
答案 0 :(得分:1)
在运行代码之前,可能会删除基于user_id
和date_of_visit
的重复项:
df.drop_duplicates(['user_id', 'date_of_visit']).groupby('user_id').filter(lambda x : x.set_index('date_of_visit').rolling('4d').count().gt(1).any()).user_id.unique()