Время покрытия эпохи по местному времени с использованием pandas - PullRequest
2 голосов
/ 20 апреля 2020

У меня есть столбец, где я получаю время как время эпохи. Например 1359699060370. У меня около миллиона строк. Прямо сейчас я использую

df['datetime'] = pd.to_datetime(df['Real_First_Packet'], unit = 'ms')

Я использую этот столбец [datetime] для создания новых столбцов, таких как один для даты, один для часа и так далее.

df['day'] = df['datetime'].dt.day

Но pd.to_datetime возвращает datetime в GMT. Мне это нужно в формате местного времени. Поэтому я использовал следующий код

df['datetime'] = pd.DatetimeIndex(pd.to_datetime(df['Real_First_Packet'],unit='ms')).tz_localize('UTC').tz_convert('US/Eastern')

Это займет немного больше времени для миллиона строк. Есть ли подход, который лучше, чем вышеупомянутый подход.

1 Ответ

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

Нет необходимости в локализации на UTC, поскольку это уже предусмотрено по умолчанию to_datetime.

Измените код следующим образом:

df['datetime'] = pd.to_datetime(df['Real_First_Packet'], utc=True).dt.tz_convert('US/Eastern')

Вы можете увеличить производительность с помощью чанкинга или кэширования. На 2M строках я бы подумал об использовании инструмента map / Reduce, например, имел oop или pyspark.

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