熊猫通过时间戳的接近形成群体

时间:2018-01-26 16:36:19

标签: python python-3.x pandas pandas-groupby

我有一个由以下代码生成的数据框:

             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();

非常感谢,如果您需要进一步的信息,请告诉我。

1 个答案:

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