我正在使用python中的事件数据库,我需要编写一个函数来量化特定事件是否跟随(AT ANY POINT)另一个特定事件。
df = pd.DataFrame({'User':[1,1,1,2,2,2],
'Product':['A','A','A','B','B','B'],
'Updated_At':['2015-01-01',
'2015-02-01',
'2015-03-01',
'2015-04-01',
'2015-05-01',
'2015-06-01'],
'Event':[1,1,2,1,3,2]})
对于用户拥有的每个产品,事件2在任何一个点上都会在下一个事件1发生之前跟随事件1.如果是,请将事件保留在事件= 1的位置。
答案(' Event_Updated'包含我想保留的行):
df = pd.DataFrame({'User':[1,1,1,2,2,2],
'Product':['A','A','A','B','B','B'],
'Updated_At':['2015-01-01',
'2015-02-01',
'2015-03-01',
'2015-04-01',
'2015-05-01',
'2015-06-01'],
'Event':[1,1,2,1,3,2],
'Updated_Event':['no', 'yes', 'no', 'yes', 'no', 'no']})
逻辑步骤似乎是继续使用groupby([' User',' Product'])并创建一个虚拟列以添加到groupby,然后检查是否在每个User,Product,EventType1的实例也存在一个Event = 2的行。类似于' Event_Dummy'列如下:
df = pd.DataFrame({'User':[1,1,1,2,2,2],
'Product':['A','A','A','B','B','B'],
'Updated_At':['2015-01-01',
'2015-02-01',
'2015-03-01',
'2015-04-01',
'2015-05-01',
'2015-06-01'],
'Event':[1,1,2,1,3,2],
'Event_Dummy': [1,2,2,3,3,3],
'Updated_Event':['no', 'yes', 'no', 'yes', 'no', 'no']})
然后声明将会出现以下几点:
检查df.grouby('User','Product','Event_Dummy')
是否包含2
。
请让我知道如何帮助澄清这个问题。