Найти шаблон в pandas кадре данных на основе нескольких столбцов - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть данные, которые выглядят следующим образом

Equipment   Timestamp           col       value
D1          18/04/2020 23:59    Command     1
            18/04/2020 23:59    Run_status  1
            19/04/2020 23:59    Run_status  0
            21/04/2020 00:59    Command     1
            22/04/2020 01:09    Command     1

Мне нужно найти следующий шаблон:

d ['col'] = 'Command' & d ['col' ] .shift () = 'Run_status'

AND d ['value'] = 1 & d ['value']. ​​shift () = 1

AND (d ['Timestamp') ] - d ['Timestamp']. shift ())

Затем создайте новый столбец, который дает True при обнаружении такого шаблона:

Equipment   Timestamp           col          value  New_col
D1          18/04/2020 23:59    Command        1    TRUE
            18/04/2020 23:59    Run_status     1    FALSE
            19/04/2020 23:59    Run_status     0    FALSE
            21/04/2020 00:59    Command        1    FALSE
            22/04/2020 01:09    Command        1    FALSE

Как создать New_col, который находит нужный шаблон?

1 Ответ

1 голос
/ 26 апреля 2020

Условия в Pandas генерируют логические массивы. Вы можете комбинировать их с бинарными операторами & и |. Чтобы добавить новый столбец, просто назначьте его.

cond1 = (d['col'] == 'Command') & (d['col'].shift(-1) == 'Run_status')
cond2 = (d['value'] == 1) & (d['value'].shift(-1) == 1)
cond3 = (d['Timestamp'].shift(-1) - d['Timestamp']) < timedelta(minutes=5)
d['New_col'] = cond1 & cond2 & cond3
...