Заставить использовать DatetimeIndex с Пандами - PullRequest
0 голосов
/ 06 января 2019

У меня есть следующий кадр данных Pandas:

df.head()

выход

id  unplug_hourDateTime
0   2018-09-01 01:00:00+02:00
1   2018-03-01 01:00:00+02:00
2   2018-03-01 01:00:00+02:00
3   2018-04-01 01:00:00+02:00
4   2018-04-01 01:00:00+02:00

Моя цель - построить график calmap на основе ежедневной записи, поэтому мне нужен фрейм данных с индексом в формате DatetimeIndex, TimedeltaIndex или PeriodIndex.

Я написал следующее:

df['unplug_Date']=df['unplug_hourDateTime'].map(lambda x : x.date())
df_calmap=df['unplug_Date'].value_counts().to_frame()
df_calmap.head()

выход

               unplug_Date
2018-09-20   16562
2018-09-13   16288
2018-09-19   16288
2018-09-12   16092
2018-09-27   16074

На первый взгляд выглядит то, что я искал, но если я использую пакет calmap и выполняю calmap.calendarplot(df_calmap), я получаю сообщение об ошибке, которое, как я предполагал, связано с форматом индекса.

AttributeError: у объекта 'Index' нет атрибута 'year'

Как я могу заставить фрейм данных использовать столбец индекса как DatetimeIndex? Я нашел этот интересный ответ, но я не могу понять, как использовать df = df.set_index(pd.DatetimeIndex(df['b'])) с уже существующим индексом, а не с новым столбцом.

1 Ответ

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

В документации calmap указано, что по умолчанию будет указана сумма в день, поэтому вам не нужно менять поле даты и времени на поле даты. Просто измените ваш столбец unplug_hourDateTime на указатель даты и времени следующим образом. Мой пример использует метод цепочки, что означает, что все делается за один раз:

df_calmap = (df
    .assign(unplug_hourDateTime=pd.DatetimeIndex(df['unplug_hourDateTime']))
    .groupby('unplug_hourDateTime')
    .size()
    .to_frame('count')
)

calmap.calendarplot(df_calmap['count'])

Конечно, вы также можете использовать хороший ответ Джоша Фридландера:

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