Невозможно правильно преобразовать индекс pandas в дату и время - PullRequest
0 голосов
/ 17 апреля 2020

Привет. Я пытаюсь импортировать CSV-файл и установить индекс как datetime obj. Это пример csv:

date,wind_force,wind_dir,cloud_cover,temp
2019-01-01 04:00:00+01:00,13.9,234.0,100.0,3.8
2019-01-01 05:00:00+01:00,14.333333,239.33333,100.0,4.5333333

Я импортирую файл и пытаюсь использовать pd.to_datetime непосредственно в моем индексе:

dfw = pd.read_csv(r'C:\Path\weather.csv', index_col = 'date')
dfw.index = pd.to_datetime(dfw.index)

Затем dfw.index возвращает:

Index([2019-01-01 04:00:00+01:00, 2019-01-01 05:00:00+01:00,
      ......
       2020-01-01 00:00:00+01:00, 2020-01-01 01:00:00+01:00],
      dtype='object', name='date', length=8750)

Если я попытаюсь dfw.index.hour Я получу ошибку:

AttributeError: 'Index' object has no attribute 'hour'

И когда я использую utc = True при изменении индекса на дату и время, он преобразует его должным образом:

dfw.index = pd.to_datetime(dfw.index, utc = True)

Но он возвращает дату и время в UT C, и я хочу, чтобы они оставались в предыдущем часовом поясе

DatetimeIndex(['2019-01-01 03:00:00+00:00', '2019-01-01 04:00:00+00:00',
              ...
               '2019-12-31 23:00:00+00:00', '2020-01-01 00:00:00+00:00'],
              dtype='datetime64[ns, UTC]', name='date', length=8750, freq=None)

Что также странно, когда я пытаюсь вызвать index по его номеру, например dfw.index[33], он возвращает:

datetime.datetime(2019, 1, 2, 13, 0, tzinfo=tzoffset(None, 3600))

И тогда я могу позвонить в dfw.index [33] .hours et c.

Так где же здесь гоча?

1 Ответ

1 голос
/ 17 апреля 2020

Как насчет:

dfw.index = pd.to_datetime(dfw.index, format='%Y-%m-%d %H:%M:%S+01:00')

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

Редактировать: Если вы хотите работать с летними / зимними часами, вы можете заменить +01 на +%f

dfw.index = pd.to_datetime(dfw.index, format='%Y-%m-%d %H:%M:%S+%f:00')
dfw.index[0].hour # returns 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...