Python 从dataframe中选择事件出现前的最后n条记录

Python 从dataframe中选择事件出现前的最后n条记录,python,pandas,select,dataframe,Python,Pandas,Select,Dataframe,假设我有以下数据帧: name timestamp 1 event1 9/2016 13:47:49 1 event2 9/2016 13:47:55 1 event3 9/2016 13:49:30 1 event4 9/2016 13:50:49 1 trigger 9/2016 13:5

假设我有以下数据帧:

      name           timestamp        
1    event1      9/2016 13:47:49          
1    event2      9/2016 13:47:55          
1    event3      9/2016 13:49:30          
1    event4      9/2016 13:50:49          
1    trigger     9/2016 13:51:49          
1    event6      9/2016 13:54:49          
1    event7      9/2016 13:55:49          
1    event8      9/2016 13:56:49          
1    event9      9/2016 13:57:49          
1    trigger     9/2016 13:58:49          
1    event10     9/2016 13:59:49          
1    event11     9/2016 13:59:59         
1    event12     9/2016 14:00:49          
1    event13     9/2016 14:00:59          
1    event14     9/2016 14:01:49     
我想做的是: 每当出现触发器列时,我都会选择最后3条记录。所以最后我想说:

      name           timestamp   
1    event2      9/2016 13:47:55          
1    event3      9/2016 13:49:30          
1    event4      9/2016 13:50:49 
1    event7      9/2016 13:55:49          
1    event8      9/2016 13:56:49          
1    event9      9/2016 13:57:49 
是否有一个很好的预定义函数来实现这一点,或者我必须迭代数据帧并手动获取它们


谢谢大家!

您可以根据
name
列是否等于
trigger
条件的
cumsum
创建一个组变量,然后为每个组获取最后三条记录(最后一组需要过滤掉,因为后面没有
trigger
):

g=(df.name='trigger').cumsum()
df[g
g = (df.name == 'trigger').cumsum()

df[g < g.max()].groupby(g[g < g.max()]).tail(3)

#     name        timestamp
#1  event2  9/2016 13:47:55
#1  event3  9/2016 13:49:30
#1  event4  9/2016 13:50:49
#1  event7  9/2016 13:55:49
#1  event8  9/2016 13:56:49
#1  event9  9/2016 13:57:49