Фильтрация пар строк, следующих определенному шаблону в значениях столбцов

#python-3.x #pandas #dataframe

Вопрос:

У меня есть csv-файл со столбцом (ССЫЛКА на КОД), в котором хранятся значения двух типов (1A и 1X); Я импортирую его в фрейм данных Pandas. Ссылка на КОД не всегда может начинаться с 1X, но я могу найти индекс первой строки, начинающийся с 1X, и соответствующим образом срезать свой фрейм данных. Я борюсь с основной задачей, которая состоит в том, чтобы фильтровать только строки, следующие последовательности 1X1A, как показано на рисунке. Я начинаю с вахтового метода.

Ввод:

 CODE REF 0 1X 1 1A 2 1A 3 1X 4 1A 5 1A 6 1A 7 1X 8 1A  

Ожидаемый результат:

 CODE REF 0 1X 1 1A 3 1X 4 1A 7 1X 8 1A  

Комментарии:

1. пожалуйста, предоставьте свои данные в виде текста и предоставьте дополнительную информацию о том, как обобщается проблема

2. @mozway это трудно описать; Я думаю, что лучше всего было бы сказать, что я хочу захватить только пары 1X1A; других столбцов нет.

3. Я вижу, пожалуйста, проверьте мой ответ. Пожалуйста, в следующий раз предоставьте вам данные в виде текста, а не изображений.

Ответ №1:

Вы можете создать маску, чтобы проверить, является ли данная строка 1X, а следующая 1A, а затем срезать, используя маску или ее сдвиг:

 m = df['CODE REF'].eq('1X')amp;df['CODE REF'].shift(-1).eq('1A')  df[m|m.shift()]  

Выход:

 CODE REF 0 1X 1 1A 3 1X 4 1A 7 1X 8 1A