【问题标题】:Python Pandas, converting datetime data into datetime.utc. whilst ignoring the timezonesPython Pandas,将日期时间数据转换为 datetime.utc。同时忽略时区
【发布时间】:2020-10-12 14:17:07
【问题描述】:

我有一个带有以下数据的熊猫数据框:

    PointId      Time                  Value
0  Brabrand1_1  2020-10-02 23:58:14+02  0.9754
1  Brabrand1_1  2020-02-23 21:03:00+01  2.1414
2  Brabrand1_1  2020-02-23 21:33:00+01  2.1406
3  Brabrand1_1  2019-01-29 18:03:32+01  1.0390
4  Brabrand1_1  2019-01-29 18:33:32+01  1.0390
5  Brabrand1_1  2019-01-29 19:03:32+01  1.0390
6  Brabrand1_1  2019-01-29 19:33:32+01  1.0399
7  Brabrand1_1  2019-01-29 20:03:32+02  1.0000

我希望时间数据为 UTC,忽略 +01、+02 ... 有什么好处 删除 +01 或 +02... 的方法是最好转换为字符串并删除 还是有更合适的方式转换为日期时间,然后 转换为UTC? 谢谢

【问题讨论】:

    标签: python pandas datetime utc


    【解决方案1】:

    您可以在不更改时间的情况下更改时区:

    import dateutil.tz
    
    new_datetime = old_datetime.replace(tzinfo=dateutil.tz.tzutc())
    

    对于您的数据框,您可以使用:

    df['Time'] = df['Time'].apply(lambda old_datetime: old_datetime.replace(tzinfo=dateutil.tz.tzutc()))
    

    如果您使用的是 python 3.9,则可以使用 zoneinfo 代替 dateutil.tz。您应该避免使用pytz,尽管在这种情况下不会造成任何问题。

    https://blog.ganssle.io/articles/2018/03/pytz-fastest-footgun.html

    【讨论】:

    • 感谢您的帮助,出于好奇,我为什么不使用 pytz?
    • 这个链接解释了 pytz 的问题。时区需要知道日期才能正确计算偏移量,但如果在 datetime 构造函数中使用 pytz,它会在知道日期之前计算偏移量。 blog.ganssle.io/articles/2018/03/pytz-fastest-footgun.html
    • 谢谢,真的很有帮助:)
    【解决方案2】:

    如果您希望数据采用 UTC:

    pd.to_datetime(df['Time']).dt.tz_convert('UTC')
    

    如果要删除 tzinfo:

    df['Time'].dt.tz_localize(None)
    

    所以要删除 tzinfo 并转换为 UTC:

    pd.to_datetime(df['Time']).dt.tz_localize(None).dt.tz_convert('UTC')
    

    【讨论】:

      【解决方案3】:

      感谢您的帮助,我使用了你们所说的内容,不得不进一步挖掘,但通过这样做得到了答案:

      df['Time'] = pandas.to_datetime(df['Time'], utc=True)
      df.Time.dt.tz_convert('UTC')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-17
        • 2017-07-21
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 2016-01-27
        • 2016-03-21
        相关资源
        最近更新 更多