Время подведения итогов по дате - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть датафрейм, в котором хранятся данные о сне (как обычный сон, так и сон).Вот несколько столбцов данных:

  • Время начала (ГГГГ-ММ-ДД ЧЧ: ММ: СС)
  • Время окончания (тот же формат, что и выше)
  • Продолжительность

Я пытаюсь найти способ суммировать количество часов сна в день.Было бы легко взглянуть на «Время начала» и подвести итог времени с той же даты, но это было бы сложно в сценарии, когда кто-то вздремнул в середине дня, но спал в 1:00 (потому что это было бырассматривается на следующий день).

В идеале я хотел бы считать сон до 4 утра следующего дня тем же днем, если это имеет смысл (например, дремать с 5:00 до 7:00 вечера 9/25, спать с 2: 00-7: 00 утра 9/26. Тогда общее количество сна на 9/25 составляет 7 часов).

Любые советы / предложения о том, как заставить это работать?

Вот моя идея (я еще не очень хорошо разбираюсь в Python, поэтому я просто собираюсь размещать псевдокод здесь и там):

# Create a datetime
next_day = datetime.time(4, 0, 0)

# Create an iterator
bedtimes = iter(df['Start time'])

for i in bedtimes:

    # Get current and next sleep datetime
    cur = df['Start time'][i]
    next = df['Start time'][i+1]

    # If the next datetime in the iterator is a day after AND before
    # 4:00am, add the times of 'cur' and 'next' together

    # What if there is a scenario where the user takes 2 one hour naps during
    # the day? What is a good way to catch that scenario as well? Use a while 
    # loop?
    if (cur.date() < next.date()) & (next.time() < next_day):
        total = cur.time() + next.time()
        # Advance to the next iteration
        next(bedtimes, None)

        # Somehow in here, I would want the loop to skip an iteration if we 
        # summed 'cur' and 'next' together (since they are considered sleep 
        # from the same day. I am interested in calculating the amount of 
        # sleep PER day)

Пожалуйста, исправьте мой синтаксис, если он неправильный!Выше это просто идея.Если есть лучшие способы, я хотел бы услышать, как это можно сделать.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...