我有一个df
uid timestamp event
34900 2015-01-01 00:00:10 5
90100 2015-01-07 00:00:00 4
90100 2015-03-02 00:00:00 9
34900 2015-01-03 00:00:00 5
34900 2015-01-01 00:40:00 6
34900 2015-01-01 00:00:01 2
90100 2015-03-01 00:07:00 5
34900 2015-01-04 00:00:09 8
34900 2015-01-07 00:00:10 2
90100 2015-01-01 20:00:00 1
在某些以日期时间为时间戳的唯一ID(34900,90100,...)上发生了事件(1-9)。
我试图找到在每个唯一ID上发生事件(事件= 5)之前和之后发生的事情。我的想法是将df分配到每个唯一的事件中,并为每个发生的事件保留相邻的事件。
所以我想知道如何从上面的df中检索以下数据帧
uid=34900
timestamp before after
2015-01-01 00:00:10 2 6
2015-01-03 00:00:00 6 8
UID = 90100
timestamp before after
2015-03-01 00:07:00 4 9
答案 0 :(得分:0)
我昨天刚问了同样的问题,但对于SQL。我被告知了超前/滞后功能。您可以找到我的问题here。
一旦我了解了领先和滞后,就可以很容易地进一步研究这个问题。看起来this问题包含您在Python中寻找的解决方案。
答案 1 :(得分:0)
根据Sparrower建议,我对数据进行了排序,并使用以下内容来获得所需的输出。
df['before'] = df.groupby(['uid'])['event'].shift(1)
df['after'] = df.groupby(['uid'])['event'].shift(-1)
df1 = df[df['event']==5]