Преобразование часовых поясов с помощью pytz на серии Pandas - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь преобразовать часовой пояс Серии панд. Я использую для этого пакет pytz, однако получаю значение, которое отключается на несколько минут. Код, который я сейчас использую, можно найти в ответе здесь: Преобразование элементов из серии Pandas в дату / время

В других ответах предлагается использовать функцию localize(), чтобы сделать эту работу, однако этоне работает в моем коде. Я попытался использовать функцию normalize() для решения этой проблемы, но я получаю сообщение об ошибке, используя серию панд.

Сообщение об ошибке: AttributeError: у объекта 'Series' нет атрибута 'tzinfo'

Пример ввода:

dfNY = pd.DataFrame({'TimeSeries': [13:00, nan, 06:00, 'Morning', 'Afternoon', nan, nan, 01:30]})

Желаемый вывод:

dfLondon = pd.DataFrame({'TimeSeries': [18:00, nan, 11:00, 'Morning', 'Afternoon', nan, nan, 06:30]})

Текущий код:

    import pandas as pd
    from pytz import timezone
    dfNY = pd.DataFrame({'TimeSeries': [13:00, nan, 06:00, 'Morning', 'Afternoon', nan, nan, 01:30]})
    tzDestination = "Europe/London"
    dtTimeSeries = pd.to_datetime(dfNY.TimeSeries, errors='coerce', format='%H:%M').dt.tz_localize(tzOrigin)
    tzChange = timezone(tzDestination)
    convertedTime = tzChange.normalize(dtTimeSeries).dt.strftime('%H:%M')
    dyNY = convertedTime.copy()
    dfNY = timeSeries.where(~convertedTime.ne('NaT'), convertedTime)

Спасибо за любую помощь

1 Ответ

0 голосов
/ 01 октября 2019

Когда я запускаю код из предыдущего ответа , он работает просто отлично. Сравните ваш код с IMCoins 'и посмотрите, в чем разница (вы создаете отдельный временной ряд, в то время как IMCoins сохраняет все в пределах кадра данных).

Во-вторых, относительно того, почему отметка времени отключена на четыре минуты, см. Ответ здесь . Как вы можете это исправить? Ну, я сомневаюсь, что у вас есть данные за 1900 год, поэтому вы можете установить дату как-то ПОСЛЕ 1 января. 1902.

...