我的数据看起来像这样
time. user value
0 2012-01-01 01:01:01 1 1
1 2012-01-02 01:01:01 1 2
2 2012-01-04 01:01:01 2 3
3 2012-01-06 01:01:01 2 1
4 2012-01-07 01:01:01 2 2
5 2012-01-08 01:01:01 2 1
6 2012-01-10 01:01:01 2 2
7 2012-01-13 01:01:01 2 2
8 2012-01-14 01:01:01 3 1
...
我需要知道,对于每个用户,是否有任何3天的时间段,这3天的值之和大于5. 1表示是,0否。结果应如下所示。
user 3DS
1 0
2 1
3 0
...
我知道在我看来,用户的groupby与某种类型的应用有某种组合。我找到了一个可能有用的窗口函数
3_days = timedelta(days=7)
lamba x : sum(df['value'][df['time'] <= x['time'] + 3_days])
如何使用pandas获取用户和3天总和(3DS)的第二个数据框?
答案 0 :(得分:0)
看起来你可以对每个用户进行滚动总结。
df_total = df.set_index('time').groupby('user').rolling(3).sum()
df_total.groupby(level='user').agg(lambda x: x.max() > 5) * 1