代码之家  ›  专栏  ›  技术社区  ›  Sheldon

熊猫从当地时间转换为UTC

  •  0
  • Sheldon  · 技术社区  · 2 年前

    我正在处理包含当地(智利)日期和时间的熊猫数据帧, 例如。 :

    本地时间
    2023年2月9日23:33
    2023年2月9日23:39
    2023年3月9日1:00
    2023年3月9日1:08

    我曾经通过应用批量时间偏移将这些日期和时间转换为UTC( pd.Timedelta(4, "h") )到我的 本地时间 专栏,但现在我想说明夏令时的变化。

    我开始使用 tz_location 要在转换为UTC之前指定时区,请使用 tz_convert :

    import pandas as pd
    from datetime import datetime
    df = pd.read_csv("Example_dataset.csv")
    pd.to_datetime(pd.to_datetime(df['local_time']).apply(lambda x: datetime.strftime(x, '%d-%m-%Y %H:%M:%S'))).dt.tz_localize('America/Santiago').dt.tz_convert('UTC')
    

    这似乎适用于这里提供的示例数据集:2023年9月2日的数据偏移了4个小时,而9月3日的数据则偏移了3个小时。

    0   2023-09-03 03:33:00+00:00
    1   2023-09-03 03:39:00+00:00
    2   2023-09-03 04:00:00+00:00
    3   2023-09-03 04:08:00+00:00
    

    这是正确的方法吗?还是我遗漏了什么?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Jason Baker    2 年前

    您需要本地化然后转换:

    df["local_time"] = pd.to_datetime(df["local_time"]).dt.tz_localize("America/Santiago").dt.tz_convert("UTC")