根据列矢量化值从熊猫的日志数据中获取累积事件?

时间:2019-11-04 02:18:49

标签: python pandas

我有一个导入到熊猫的日志,如下所示:

data = [['A',1,0,'a'],
        ['A',1,1,'b'],
        ['B',1,0,'c'],
        ['B',2,0,'b'],
        ['B',2,1,'a'],
        ['B',2,2,'b'],
        ['B',2,3,'b'],
        ['B',2,4,'a'],
        ['D',1,0,'d'],
        ['D',2,0,'d'],
        ['D',3,0,'a']]
df = pd.DataFrame(data, columns=['Id', 'Session', 'Time', 'Event'])
df

给出:

        Id  Session Time    Event
    0   A   1       0       a
    1   A   1       1       b
    2   B   1       0       c
    3   B   2       0       b
    4   B   2       1       a
    5   B   2       2       b
    6   B   2       3       b
    7   B   2       4       a
    8   D   1       0       d
    9   D   2       0       d
    10  D   3       0       a

如您所见,每个Id可以有多个Session,分别由TimeEvent描述。我正在尝试获取给定aId导致事件Session的累积事件。使用此示例,我想获得类似以下的输出:

        Id  Session Time    Event   Series_by_a
    0   A   1       0       a       1
    1   B   2       0       b       2
    2   B   2       1       a       2
    3   B   2       0       b       3
    4   B   2       1       a       3
    5   B   2       2       b       3
    6   B   2       3       b       3
    7   B   2       4       a       3
    8   D   3       0       a       4

如您所见,从原始的DataFrame中,我们丢弃了第1行(Event b发生在a之后),第2行(Session 1来自{{1} } B没有Id Event),并且第8和9行(想法相同)。但是,我们发现在a B的Session 2中,Id Event发生了两次,因此新的DataFrame捕获了直到发生a指向并标记它们(在Event列中)。

显而易见的答案是迭代地执行此操作,但是似乎应该有一种使用Series_by_a或类似的矢量化机制来执行此操作的方法,但是如果是这样,我不确定从哪里开始。

0 个答案:

没有答案