Ich suche nach drei Spalten zu meinem aktuellen Datenrahmen (utc_date, apac_date und Stunde).Python - Zeitzone konvertieren und Stunde abrufen
Ich erhalte erfolgreich zwei der drei Spalten, jedoch sollte die Stunde apac_date (17) entsprechen, aber es wird die Stunde für utc_date (9) zurückgegeben.
Jede Hilfe würde sehr geschätzt werden!
Dies ist der Ausgangsdatenrahmen:
import pandas as pd
from tzlocal import get_localzone
from pytz import timezone
raw_data = {
'id': ['123456'],
'start_date': [pd.datetime(2017, 9, 21, 5, 30, 0)]}
df = pd.DataFrame(raw_data, columns = ['id', 'start_date'])
df
Ergebnis:
id start_date
123456 2017-09-21 05:30:00
Als nächstes konvertiere ich die Zeitzonen für utc und apac auf den Nutzer aktuelle Region basieren.
local_tz = get_localzone()
df['utc_date'] = df['start_date'].apply(lambda x: x.tz_localize(local_tz).astimezone(timezone('utc')))
df['apac_date'] = df['utc_date'].apply(lambda x: x.tz_localize('utc').astimezone(timezone('Asia/Hong_Kong')))
df
Ergebnis:
id start_date utc_date apac_date
123456 2017-09-21 05:30:00 2017-09-21 09:30:00+00:00 2017-09-21 17:30:00+08:00
Als nächstes rufe ich die Stunde für die apac_date (es mir utc Stunde geben statt):
df['hour'] = df['apac_date'].apply(lambda x: int(x.strftime('%H')))
df
Ergebnis:
id start_date utc_date apac_date hour
123456 2017-09-21 05:30:00 2017-09-21 09:30:00+00:00 2017-09-21 17:30:00+08:00 9