Теперь вернем его к исходному фрейму данных:

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

Код:

import pandas as pd
from numpy.random import choice, randn
import string

# df constructor
n_rows = 1000
df = pd.DataFrame({'date_time': pd.date_range('2/9/2018', periods=n_rows, freq='H'),
                   'group_var': choice(list(string.ascii_uppercase), n_rows),
                   'row_pat': choice([0, 1, 2, 3], n_rows),
                   'values': randn(n_rows)})

# sorting 
df.sort_values(by=['group_var', 'date_time'], inplace=True)
df.head(10)

Который возвращает это:

Я могу найти начало шаблона (без группировки) по этому:

# the row ordinal pattern to detect
p0, p1, p2, p3 = 1, 2, 2, 0 

# flag the row at the start of the pattern
df['pat_flag'] = \
df['row_pat'].eq(p0) & \
df['row_pat'].shift(-1).eq(p1) & \
df['row_pat'].shift(-2).eq(p2) & \
df['row_pat'].shift(-3).eq(p3)

df.head(10)

Что я не могу понять, так это как сделать это только с помощью «group_var», и вместо того, чтобы возвращать True для начала шаблона, возвращать true для всех строк, которые являются частью шаблона.

Ценю любые советы о том, как решить эту проблему!

Спасибо...

Ответы на вопрос(1)

Ваш ответ на вопрос