如何在数据帧中比较组中的多行?

2024-04-27 01:00:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想比较组中的所有行,以找到事件的正确顺序。我的示例数据帧具有类似的结构:

Group  Prev_Event    Current_Event        Time
001    Blank         Initial        2019-02-13 18:00:00   
001    Ready         Loading        2019-02-13 18:00:00
001    Initial       Ready          2019-02-13 18:00:00
001    Loading       Executing      2019-02-13 18:30:00
001    Executing     Evaluating     2019-02-13 18:30:00
001    Evaluating    Terminating    2019-02-13 18:30:00
002    Blank         Ready          2019-02-14 07:00:00 

通过将上一个事件与当前的事件进行比较和匹配,该数据点的相应时间戳将通过添加1s进行修改。但是,如果时间戳值与上一个数据点不同,则我希望保留原始时间戳。你知道吗

注意:我的数据有多个循环,其中上一个事件与当前事件匹配的多个数据点,因此无法使用图形。你知道吗

我的预期产出是:

Group   Prev_State   Current_State   New_Timestamp
001    None          Initial        2019-02-13 18:00:00   
001    Ready         Loading        2019-02-13 18:00:02
001    Initial       Ready          2019-02-13 18:00:01
001    Loading       Executing      2019-02-13 18:30:00
001    Executing     Evaluating     2019-02-13 18:30:01
001    Evaluating    Terminating    2019-02-13 18:30:02
002    Blank         Ready          2019-02-14 07:00:00

我想我需要使用一个基本函数shift来迭代组中的多行,并与Prev和Current事件变量进行比较和排序,但我不知道如何应用。 任何帮助都将不胜感激。你知道吗

此外,在某些特殊情况下,某些数据点不遵循上一事件与其他数据点的当前事件不匹配的模式;在这些情况下,必须随机分配顺序。你知道吗

附加示例:

Group   Prev_State   Current_State   Timestamp             New_Time
    001    None        Initial      2019-02-13 18:00:00  2019-02-13 18:00:00
    001    Ready       Loading      2019-02-13 18:00:00  2019-02-13 18:00:02 
    001    Initial     Ready        2019-02-13 18:00:00  2019-02-13 18:00:01
    001    Initial     Waiting      2019-02-13 18:30:00  2019-02-13 18:30:00
    001    Waiting     Ready        2019-02-13 18:30:00  2019-02-13 18:30:01
    001    Evaluating  Terminating  2019-02-13 18:30:00  2019-02-13 18:30:02
    002    Blank       Ready        2019-02-14 07:00:00  2019-02-14 07:00:00

在第3行和第4行(Prev\u状态)中,这两个行都具有相同的“初始”状态,可以与第一行匹配(“当前\u状态”),因此,可以为顺序选择上面的任何一个。 在组1的最后一行中,Prev\u状态无法与当前的任何\u状态匹配,因此必须为其分配一个独立的顺序。你知道吗

这是我的数据集的一个样本。你知道吗


Tags: 数据顺序状态group事件currentinitialstate