Мой DataFrame:
import pandas as pd
df = pd.DataFrame(
{
'a': [False, True, False, True, False, True, False, True, True, False, False],
}
)
Ожидаемый результат формирует такие группы:
a
1 True
2 False
3 True
a
5 True
6 False
7 True
a
8 True
9 False
10 False
Логика такова:
По сути, я хочу формировать группы, где df.a == True и две строки после этого. Например, чтобы создать первую группу, необходимо найти первое значение True, то есть строку 1. Тогда первая группа — это строки 1, 2 и 3. Для второй группы должен быть найден следующий True, которого нет в первой группе. Эта строка — строка 5. Итак, вторая группа состоит из строк 5, 6 и 7. Это изображение проясняет суть:
[img]https://i. sstatic.net/rE2vDRtk.png[/img]
И это моя попытка, которая не сработала:
N = 2
mask = ((df.a.eq(True))
.cummax().cumsum()
.between(1, N+1)
)
out = df[mask]
Подробнее здесь: https://stackoverflow.com/questions/786 ... -that-mask
Как я могу формировать группы по маске и N строк после этой маски? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение