Переход от R к Python, и я с трудом копирую следующий код:
df = df %>% group_by(ID) %>% slice(seq_len(min(which(F < 1 & d == 8), n()))
Пример данных:
ID Price F D
1 10.1 1 NAN
1 10.4 1 NAN
1 10.6 .8 8
1 8.1 .8 NAN
1 8.5 .8 NAN
2 22.4 2 NAN
2 22.1 2 NAN
2 21.1 .9 8
2 20.1 .9 NAN
2 20.1 .9 6
с желаемым выводом:
ID Price F D
1 10.1 1 NAN
1 10.4 1 NAN
2 22.4 2 NAN
2 22.1 2 NAN
Я полагаю, что код на python будет включать в себя нечто вроде: np.where, cumcount () и slice.
Однако я понятия не имею, как бы я поступил так.Любая помощь будет оценена, спасибо.
РЕДАКТИРОВАТЬ: Любому в будущем, кто придет на мой вопрос в надежде найти решение - решение yatu работало нормально, - но я нашел способ найти другое решение, которое, как мне показалось, было немного легче читать:
df['temp'] = np.where((df['F'] < 1) & (df['D'] == 8), 1, 0)
mask = df.groupby(ID)['temp'].cumsum().eq(0)
df[mask]
Я немного прочитал о маскировке, и это действительно немного упрощает сложности Python!