Как получить следующую строку в кадре данных после разрезания на основе значений условий? - PullRequest
0 голосов
/ 03 марта 2020

В качестве примера у меня есть 2 следующих фрейма данных.

In [29]: pbm_sig
Out[29]: 
                              Open  Trouble
Timestamp                                  
2019-12-22 06:40:00+00:00  7137.00  dis_val
2019-12-22 06:45:00+00:00  7134.34  dis_val
2019-12-22 06:50:00+00:00  7135.03  dis_val
2019-12-22 06:55:00+00:00  7131.74  dis_val

In [30]: known_ca
Out[30]: 
                              Open    Trouble Corrective
Timestamp                                               
2019-12-22 06:40:00+00:00  7137.00    dis_val     remove
2019-12-22 06:45:00+00:00  7134.34    dis_val     remove
2019-12-22 06:50:00+00:00  7135.03    dis_val       keep
2019-12-22 06:55:00+00:00  7131.74    dis_val     remove
2019-12-22 07:00:00+00:00  7188.00    dis_val        add
2019-12-22 07:05:00+00:00  7389.00  short_dur     remove

known_ca - это гораздо больший фрейм данных, но вот выдержка, которая содержит соответствующие данные. Я использую следующий код для извлечения интересующих строк (относительно того, что содержит pbm_sig).

# Check if problem is found in corrective action database based on timestamps and problem type.
corrective_actions = known_ca[(known_ca['Trouble'].isin(pbm_sig['Trouble'])) & (known_ca.index.isin(pbm_sig.index))]

А теперь вопрос. Я хотел бы получить следующую следующую строку в known_ca, которая следует за последней строкой, полученной в dataframe corrective_actions. Итак, в данном примере я имею в виду следующую строку:

2019-12-22 07:00:00+00:00  7188.00    dis_val        add

Пожалуйста, у вас есть как это сделать? Я благодарю вас за вашу помощь. Хорошего дня. Bests,

1 Ответ

2 голосов
/ 03 марта 2020

Сдвиньте маску:

mask_orig = (known_ca['Trouble'].isin(pbm_sig['Trouble'])) & (known_ca.index.isin(pbm_sig.index))
mask_shifted = mask_orig.shift(1)

Если вы не хотите, чтобы исходные значения вмешивались, исключите их, т.е.

mask_shifted = mask_shifted & ~mask_orig
df = df[mask_shifted]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...