0
我期待添加三列到我當前的數據框(utc_date,apac_date和小時)。python - 轉換時區和檢索小時
我成功獲取了三列中的兩列,但小時應該對應於apac_date(17),但是它將返回utc_date(9)的小時。
任何幫助將不勝感激!
這是起始數據框:
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
結果:
id start_date
123456 2017-09-21 05:30:00
接下來,我轉換基於用戶當前區域爲UTC和亞太地區的時區。
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
結果:
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
接下來,我檢索小時的apac_date(它給我UTC小時,而不是):
df['hour'] = df['apac_date'].apply(lambda x: int(x.strftime('%H')))
df
結果:
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