我有一个由以下代码生成的数据框:
timeStamp usageid values
0 2017-01-01 19:53:36 0 -1
1 2017-01-01 19:54:36 1 999
2 2017-01-03 18:15:13 2 1999
3 2017-01-03 18:18:11 3 2999
4 2017-01-03 18:44:35 4 3999
5 2017-01-07 12:50:48 5 4999
在此版本中如下所示
df_user10241['timeStamp'] < pd.Timedelta(minutes=15)
我想根据密切合作的观察形成群组。例如,所有在15分钟时间间隔内的观测值应该组合在一起。
我知道我可以按照以下两种方式识别这些观察结果
timeStamp usageid values session
0 2017-01-01 19:53:36 0 -1 Session1
1 2017-01-01 19:54:36 1 999 Session1
2 2017-01-03 18:15:13 2 1999 Session2
3 2017-01-03 18:18:11 3 2999 Session2
4 2017-01-03 18:44:35 4 3999 Session3
5 2017-01-07 12:50:48 5 4999 Session4
但是,我没有设法将它们分组。我得到了如下数据框:
var isAllowed = context.Engineers
.Where(b => b.Engineer1 == Environment.UserName)
.Select(x => new { x.IsAllowed }).First();
非常感谢,如果您需要进一步的信息,请告诉我。
答案 0 :(得分:2)
您需要cumsum
'Session'+(df.timeStamp.diff().fillna(0)/np.timedelta64(15, 'm')).gt(1).cumsum().add(1).astype(str)
Out[959]:
0 Session1
1 Session1
2 Session2
3 Session2
4 Session3
5 Session4
Name: timeStamp, dtype: object
分配后
df['Session']='Session'+(df.timeStamp.diff().fillna(0)/np.timedelta64(15, 'm')).gt(1).cumsum().add(1).astype(str)
df
Out[961]:
timeStamp usageid values Session
0 2017-01-01 19:53:36 0 -1 Session1
1 2017-01-01 19:54:36 1 999 Session1
2 2017-01-03 18:15:13 2 1999 Session2
3 2017-01-03 18:18:11 3 2999 Session2
4 2017-01-03 18:44:35 4 3999 Session3
5 2017-01-07 12:50:48 5 4999 Session4