Подсчитайте строковые значения в столбце через 30-минутные интервалы времени, используя панд - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу определить количество строковых переменных в столбце в выборке данных за 3 месяца.Образцы отбирали в случайное время в течение каждого дня.Я могу сгруппировать данные по часам, но мне требуется точность 30-минутных интервалов (например, 0500-0600, 0600-0630) для примерно 10 тыс. Строк данных.

Пример данных:

datetime               stringvalues
2018-06-06 17:00          A
2018-06-07 17:30          B
2018-06-07 17:33          A
2018-06-08 19:00          B
2018-06-09 05:27          A

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

df['datetime'] = pd.to_datetime(df['datetime']
df.index = df['datetime']
df.groupby(df.index.hour).count()

, который возвращает результат, похожий на:

              datetime     stringvalues
datetime
5                0              0
6                2              2
7                5              5
8                1              1
...

Я исследовал мультииндексирование и повторную выборку до некоторой длины в последние два дняно я не смог найти похожий вопрос.Желаемый результат будет выглядеть примерно так:

datetime     A       B
 0500        1       2
 0530        3       5
 0600        4       6 
 0630        2       0
 ....

1 Ответ

0 голосов
/ 14 сентября 2018

Не существует простого способа сделать TimeGrouper для компонента времени, поэтому мы делаем это в два этапа:

v = (df.groupby([pd.Grouper(key='datetime', freq='30min'), 'stringvalues'])
       .size()
       .unstack(fill_value=0))
v.groupby(v.index.time).sum()

stringvalues  A  B
05:00:00      1  0
17:00:00      1  0
17:30:00      1  1
19:00:00      0  1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...