首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定Pandas Dataframe中的哪些组按特定顺序有一系列事件?

如何确定Pandas Dataframe中的哪些组按特定顺序有一系列事件?
EN

Stack Overflow用户
提问于 2022-05-12 12:59:33
回答 1查看 75关注 0票数 0

我有一个熊猫的数据,关于分析跟踪用户的行为。它有这样的结构:

我想要计算发生eventA的会话数,在以后的时间戳中,eventB发生在同一个会话中(例如,在示例图片中只有一个会话id 101,其中有eventA first,后面有eventB )

我一辈子都想不出最好的办法。

我尝试过两种方法,这两种方法都让我觉得太费解了:

方法1)

  • I按事件typeB进行过滤,按会话分组,提取最大时间戳
  • ,然后按会话分组按事件typeA进行过滤,提取最小时间戳--这两组数据,以比较eventA的min时间戳何时为非空时间戳而小于eventB

的时间戳。

代码太多,很难检查有效性

方法2)我的经理建议我:

  • 按会话和时间戳排序(如示例中所示),
  • 使用where子句添加一个列"eventB_timestamp“,该列值仅针对具有eventB
  • 的行使用反向填充来传播带有eventA的带有"eventB_timestamp”值

的行的 event_timestamp。

但这也是一个复杂的问题,而且有可能从错误的会议中读取数据。

我正试着在网上查找一种更自然的方法来解决这个问题,但我什么也找不到

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 13:57:10

你可以试试这样的方法:

代码语言:javascript
运行
复制
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())

它类似于您的第一种方法,但没有合并。希望不会太复杂。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72216036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档