Как сгруппировать дату и время по часам - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь сгруппировать массив datetime по часам и вернуть счетчик каждого часа.

Это мой список, который содержит много объектов datetime.Я пытаюсь использовать цикл, чтобы подсчитать, сколько объектов datetime имеют один и тот же час, но я не смог найти способ получить счет.

Все остальные ссылки в stackoverflow хранят дату как столбец в пандах, которыеЯ не хочу, потому что мои datetime хранятся в списке.

Я надеюсь получить список объектов hour_count, который выглядит следующим образом

hour_cound = [
    { 
        "hour": datetime,
        "count": 2
    }
]



# code

hours = [
    datetime(2019, 1, 25, 1),
    datetime(2019, 1, 25, 1),
    datetime(2019, 1, 25, 2),
    datetime(2019, 1, 25, 3),
    datetime(2019, 1, 25, 4),
    datetime(2019, 1, 25, 4)
]

existed = []
for hour in hours:
    if hour.hour not in existed:
        existed.append({
            "hour": hour.hour,
            "count": existed[hour.hour] + 1
        })

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Самое простое без использования pandas - это использовать collections.Counter

from collections import Counter
counts = Counter(h.hour for h in hours)
print(counts)
#Counter({1: 2, 2: 1, 3: 1, 4: 2})

Теперь просто переформатируйте в желаемый результат, используя понимание списка:

hour_count = [{"hour": h, "count": c} for h, c in counts.items()]
print(hour_count)
#[{'count': 2, 'hour': 1},
# {'count': 1, 'hour': 2},
# {'count': 1, 'hour': 3},
# {'count': 2, 'hour': 4}]
0 голосов
/ 25 января 2019

Вы можете использовать вспомогательный метод из pandas для хранения вашего списка часов, а затем использовать numpy для генерации уникальных счетчиков для каждого уникального часа.

import numpy as np
import pandas as pd

hours = pd.DatetimeIndex(hours).hour
unique_hours, counts = np.unique(hours, return_counts=True)
hour_count = [{ "hour": hour, "count": count } for hour, count in zip(unique_hours, counts)]

pprint(hour_count)

Результат

[{'count': 2, 'hour': 1},
 {'count': 1, 'hour': 2},
 {'count': 1, 'hour': 3},
 {'count': 2, 'hour': 4}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...