Pandas 查找事件的发生情况

Pandas 查找事件的发生情况,pandas,Pandas,我有一个包含五个不同事件的数组,每个事件在不同的时间间隔内发生不止一次 例: 以下是使用和的潜在方法: 然后,您可以进行进一步的分组操作,以获得所需的结果: s_out = s_out.groupby(level=1, sort=False).apply(np.array) [外] 我将您的活动列表作为一个简单的Python列表: 然后执行以下步骤: 导入itertools(不久将需要) 从act创建数据帧: 向辅助数据帧生成数据: rows = [] for k, g in itertoo

我有一个包含五个不同事件的数组,每个事件在不同的时间间隔内发生不止一次

例:


以下是使用和的潜在方法:

然后,您可以进行进一步的分组操作,以获得所需的结果:

s_out = s_out.groupby(level=1, sort=False).apply(np.array)
[外]


我将您的活动列表作为一个简单的Python列表:

然后执行以下步骤:

  • 导入itertools
    (不久将需要)

  • 从act创建数据帧:

  • 向辅助数据帧生成数据:

    rows = []
    for k, g in itertools.groupby(df.itertuples(name='row'), lambda row: row.activity):
        grp = list(g)
        rows.append([(grp[0].Index, grp[-1].Index), k])
    
    df2 = pd.DataFrame(rows, columns=['id', 'activity'])
    
    请注意,itertools.groupby与groupby的不同之处在于 详细信息:源元素键中的每个更改都会打开一个新组

    因此,结果是:

    [[(0, 3), 'walking'],
     [(4, 7), 'running'],
     [(8, 12), 'walking'],
     [(13, 15), 'standing'],
     [(16, 18), 'walking']]
    
    activity
    running                        [(4, 7)]
    standing                     [(13, 15)]
    walking     [(0, 3), (8, 12), (16, 18)]
    Name: id, dtype: object
    
  • 创建辅助数据帧:

    rows = []
    for k, g in itertools.groupby(df.itertuples(name='row'), lambda row: row.activity):
        grp = list(g)
        rows.append([(grp[0].Index, grp[-1].Index), k])
    
    df2 = pd.DataFrame(rows, columns=['id', 'activity'])
    
  • 生成最终结果:

    df2.groupby('activity').id.agg(list)
    
  • 结果是:

    [[(0, 3), 'walking'],
     [(4, 7), 'running'],
     [(8, 12), 'walking'],
     [(13, 15), 'standing'],
     [(16, 18), 'walking']]
    
    activity
    running                        [(4, 7)]
    standing                     [(13, 15)]
    walking     [(0, 3), (8, 12), (16, 18)]
    Name: id, dtype: object
    

    例如,对于walking-一个元组列表,就像你想要的一样。

    现在我得到了他真正想要的,在这种情况下,我的解决方案完全不同,谢谢
    df2.groupby('activity').id.agg(list)
    
    activity
    running                        [(4, 7)]
    standing                     [(13, 15)]
    walking     [(0, 3), (8, 12), (16, 18)]
    Name: id, dtype: object