Найдите местное datetime по указанному c почтовому индексу с учетом UT C времени - PullRequest
1 голос
/ 09 июля 2020

У меня есть фрейм данных, который включает почтовый индекс США и поле datetimeoffset с UT C time. Я хочу добавить столбец в фрейм данных, который показывает местное время на основе Zip. Похоже, что pyzipcode может иметь то, что мне нужно, но я не могу понять, как это кодировать. Вот пример имеющегося у меня фрейма данных:

import pandas as pd
from pyzipcode import ZipCodeDatabase

zcdb = ZipCodeDatabase()

data = [{'Zip':78745, 'DateTimeOffsetUTC':'7/8/2020 5:17:48 PM +00:00'}]
df = pd.DataFrame(data)
df["LocalDatetime"] = ???

Заранее спасибо! Я думаю, это может быть очень просто, но я новичок в python.

1 Ответ

1 голос
/ 09 июля 2020

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

dt = pd.to_datetime(df['DateTimeOffsetUTC'])
offset = df['Zip'].map(lambda z: pd.Timedelta(hours=zcdb[z].timezone))    
df['LocalDatetime'] = (dt + offset).dt.tz_localize(None)              
 
df
     Zip           DateTimeOffsetUTC       LocalDatetime
0  78745  7/8/2020 5:17:48 PM +00:00 2020-07-08 11:17:48
...