Как я могу формировать группы по маске и N строк после этой маски?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу формировать группы по маске и N строк после этой маски?

Сообщение Anonymous »

Мой 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»