每位用户3天运行金额

时间:2016-12-24 03:15:06

标签: python pandas

我的数据看起来像这样

            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)的第二个数据框?

1 个答案:

答案 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