【问题标题】:How to apply a 'tzoffset' to a datetime object in a panda dataframe?如何将“tzoffset”应用于熊猫数据框中的日期时间对象?
【发布时间】:2019-12-27 18:19:21
【问题描述】:

我有点迷失了......

我在 python 中使用 read_csv() 函数实例化了一个熊猫数据框。 我必须在列表中提取包含时间戳的列并进行一些清理。 这个列表现在看起来像:

0     Sat Mar 30 2019 21:00:00 GMT+0100
1     Sat Mar 30 2019 22:00:00 GMT+0100
2     Sat Mar 30 2019 23:00:00 GMT+0100
...

我将它转换回“日期时间”对象并使用以下命令将其添加回我的数据框中:

df['date'] = pd.to_datetime(my_timestamps)

df['date'] 现在看起来像:

0     2019-03-30 21:00:00-01:00
1     2019-03-30 22:00:00-01:00
2     2019-03-30 23:00:00-01:00

之前或之后,我想实际应用时区偏移量,以便有:

0     2019-03-30 20:00:00+00:00
1     2019-03-30 21:00:00+00:00
2     2019-03-30 22:00:00+00:00

请问,我怎样才能得到它?

提前感谢您的帮助。

晚上好,

最佳,

皮埃罗

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    hours 上尝试pd.DateOffsetutc=True,如下所示

    df['date'] = pd.to_datetime(my_timestamps, utc=True) - pd.DateOffset(hours=2)
    
    Out[860]:
    0   2019-03-30 20:00:00+00:00
    1   2019-03-30 21:00:00+00:00
    2   2019-03-30 22:00:00+00:00
    Name: 0, dtype: datetime64[ns, UTC]
    

    如果你想完全剥离时区,试试这个

    import pytz    
    df['date'] = (pd.to_datetime(my_timestamps).dt.tz_convert(pytz.FixedOffset(-120))
                                               .dt.tz_localize(None))
    
    Out[863]:
    0   2019-03-30 20:00:00
    1   2019-03-30 21:00:00
    2   2019-03-30 22:00:00
    Name: 0, dtype: datetime64[ns]
    

    【讨论】:

    • 您好,感谢您的回答。不幸的是,这不是我想要的。这个时区有夏令时。因此,偏移量可以是 -1 小时,如给出的示例所示,也可以是 -2 小时。我想简单地应用给定的偏移量。我很惊讶所以也许我不明白:为什么我得到的偏移量不能按原样应用:-1h。在您的代码中,您偏移了 -2 小时。如果 tzoffset 为 -1,要获得 UTC 时间,您应该将 1 小时减去当前时间。时区是否正确初始化?
    【解决方案2】:
    猜你喜欢
    • 2019-01-24
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2020-07-01
    相关资源
    最近更新 更多