создание очереди заказов на основе времени начала и окончания в pandas python

1

У меня есть фреймворк pandas, который содержит три столбца даты, время начала и столбец времени окончания и даты, который определяет диапазон. Я хотел бы иметь возможность собирать счетчик очереди за все время и дату по всем строкам в фрейме данных, как определено этими столбцами.

date start

 1. date   starttime   endtime 
 2. 2/3/20  6:20 pm    7:20 pm 
 3. 2/3/20   6:25pm    7:25 pm
 4. 2/3/20   6:29pm    7:40 pm 
 5. 2/3/20   7:21pm    7:59pm 

Я хочу создать столбец на основе очереди, который даст мне количество очередей до текущей, как показано ниже:

date start

 1. date   starttime   endtime  queue 
 2. 2/3/20  6:20 pm    7:20 pm   1
 3. 2/3/20   6:25pm    7:25 pm   2
 4. 2/3/20   6:29pm    7:40 pm   3
 5. 2/3/20   7:21pm    7:59pm    2

Я новичок в этом, и любая помощь будет очень признательна.

Новый участник
Прашант Пандья - новый участник этого сайта. Будьте внимательны, прося разъяснений, комментируя и отвечая. Ознакомьтесь с нашим Кодексом поведения .
0

Размер очереди в любой момент зависит от шага. Существует пакет под названием staircase , который построен на pandas и numpy для ступенчатых функций. У него даже есть тематическое исследование анализа очереди .

настраивать

Использование немного другого формата ваших данных (с ним проще работать, я бы посоветовал вам использовать его)

data = pd.DataFrame(
    {
        "start":[
            pd.Timestamp("2020-03-02 18:20"),
            pd.Timestamp("2020-03-02 18:25"),
            pd.Timestamp("2020-03-02 18:29"),
            pd.Timestamp("2020-03-02 19:21"),
        ],
        "end":[
            pd.Timestamp("2020-03-02 19:20"),
            pd.Timestamp("2020-03-02 19:25"),
            pd.Timestamp("2020-03-02 19:40"),
            pd.Timestamp("2020-03-02 19:59"),
        ]
    }
)

это дает вам

                start                 end
0 2020-03-02 18:20:00 2020-03-02 19:20:00
1 2020-03-02 18:25:00 2020-03-02 19:25:00
2 2020-03-02 18:29:00 2020-03-02 19:40:00
3 2020-03-02 19:21:00 2020-03-02 19:59:00

решение

создать Stairsобъект, который представляет пошаговую функцию, например

import staircase as sc

stepfunction = sc.Stairs(data, "start", "end")

С этими Stairsобъектами можно делать много чего, включая построение графиков.

stepfunction.plot(style="hlines")

пошаговая функция для очереди

Вы можете выбрать размер очереди в любой момент (а), который вам нравится. Похоже, вы хотите, чтобы размер очереди выбирался при каждом запуске, что вы можете сделать следующим образом

stepfunction(data["starts"])

что дает вам

array([1, 2, 3, 3], dtype=int64)

добавьте это в свой фрейм данных, как это

data["queue"] = stepfunction(data["starts"])
1
  • Огромное спасибо за помощь !!!! Я искал это некоторое время. Я не могу это представить себе, но это не важно, очередь работает так, как я хотел. Это тоже экономия времени. У меня есть еще один столбец идентификатора магазина, который мне нужно проверить, такой же он или нет. Можем ли мы передать это в функции лестницы или нам нужно зациклить функцию шага? 2 минуты назад