Как получить группы строк, ограниченные определенными значениями в 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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