我有一个熊猫的数据,关于分析跟踪用户的行为。它有这样的结构:
我想要计算发生eventA的会话数,在以后的时间戳中,eventB发生在同一个会话中(例如,在示例图片中只有一个会话id 101,其中有eventA first,后面有eventB )
我一辈子都想不出最好的办法。
我尝试过两种方法,这两种方法都让我觉得太费解了:
方法1)
的时间戳。
代码太多,很难检查有效性
方法2)我的经理建议我:
的行的 event_timestamp。
但这也是一个复杂的问题,而且有可能从错误的会议中读取数据。
我正试着在网上查找一种更自然的方法来解决这个问题,但我什么也找不到
发布于 2022-05-12 13:57:10
你可以试试这样的方法:
import numpy as np
types = ['typeA', 'typeB']
for type_ in types:
df[f'event_{type_}_timestamp'] = np.where(df['event_name'] == f'interesting_event_{type_}',
df['event_timestamp'],
np.NaN)
df_events = df.groupby('user_session_id').agg({'event_typeA_timestamp': 'min',
'event_typeB_timestamp': 'max'})
print((df_events['event_typeA_timestamp'] < df_events['event_typeB_timestamp']).sum())
它类似于您的第一种方法,但没有合并。希望不会太复杂。
https://stackoverflow.com/questions/72216036
复制相似问题