Python 每用户3天运行费用
我有这样的数据Python 每用户3天运行费用,python,pandas,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
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])
3天=timedelta(天=7)
lamba x:sum(df['value'][df['time']看起来您可以对每个用户进行滚动求和
df_total = df.set_index('time').groupby('user').rolling(3).sum()
df_total.groupby(level='user').agg(lambda x: x.max() > 5) * 1
看起来您可以对每个用户进行滚动求和
df_total = df.set_index('time').groupby('user').rolling(3).sum()
df_total.groupby(level='user').agg(lambda x: x.max() > 5) * 1
你的问题是什么?你的问题是什么?如果一个用户的记录间隔超过一天,这将不起作用。偶尔会有一个用户每周或每月有一次记录,因此窗口需要明确为3天。好的,答案是连续三天。它已被修改为连续3条记录,而不与日历挂钩天。如果用户的记录间隔超过一天,这将不起作用。偶尔会有一个用户每周或每月有一次记录,因此窗口需要明确为3天。好的,答案是连续3天。它已被修改为连续3条记录,并且与日历日无关。