【问题标题】:python - Convert timezone and retrieve hourpython - 转换时区并检索小时
【发布时间】:2018-03-03 06:31:55
【问题描述】:

我希望在当前数据框中添加三列(utc_date、apac_date 和 hour)。

我成功获得了三列中的两列,但是小时应该对应于 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 和 apac 的时区。

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

【问题讨论】:

    标签: python datetime timezone pytz


    【解决方案1】:

    你可以尝试使用:

    df['apac_date'] = df['utc_date'].apply(lambda x: x.tz_convert('Asia/Hong_Kong'))
    

    在已本地化的时区上使用 tz_localize() 时,您的上述代码出现错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2012-06-15
      • 2019-06-12
      • 1970-01-01
      • 2013-11-24
      • 2019-04-07
      • 1970-01-01
      相关资源
      最近更新 更多