Как получить группы строк, ограниченные определенными значениями в Pandas?Python

Программы на Python
Anonymous
Как получить группы строк, ограниченные определенными значениями в Pandas?

Сообщение Anonymous »

Данные
У меня есть данные, похожие на следующие:

Код: Выделить всё

import pandas as pd

df = pd.DataFrame(
[
["start", ""],
["data", 10],
["data", 11],
["stop", ""],

["start", ""],
["data", 20],
["data", 21],
["stop", ""],
],
columns=["type", "value"],
)

Код: Выделить всё

    type value
0  start
1   data    10
2   data    11
3   stop
4  start
5   data    20
6   data    21
7   stop
Цель
Моя цель — перебирать простые списки данных, ограниченные значениями start и stop код>:

Код: Выделить всё

[10, 11]
[20, 21]
Для этого мне хотелось бы иметь возможность перебирать группы фреймов данных, которые расположены по этим конкретным значениям в определенных столбцах.
Попытка
Я могу сделать это, повторяя:

Код: Выделить всё

def iter_groups(df):
start_idx = None
for idx, row in df.iterrows():
if row["type"] == "start":
assert start_idx is None
start_idx = idx
continue
if row["type"] == "stop":
assert start_idx is not None
yield df.iloc[start_idx : idx+1]
start_idx = None
Но неудивительно, что это происходит довольно медленно. Как я могу сделать это с помощью методов Pandas?
Упрощение
Я думаю, можно с уверенностью предположить, что между остановками никогда не бывает строк
code> одной группы и начало следующей группы.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-pandas

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