首页 > 解决方案 > 如何将日期时间类型分配给数据框中的多个列并保留时间 UTC 偏移信息?

问题描述

下面的赋值dtypes

data = {"Naive": ["2020-11-27 09:00:00", "2020-11-27 10:20:00"],
        "UTC+1": ["2020-11-27T09:26:24+01:00", "2020-11-27T10:20:03+01:00"], 
        "UTC+2": ["2020-11-27T09:26:24+02:00", "2020-11-27T11:44:55+02:00"]}

df = pd.DataFrame(data)
df=df.astype({"Naive":"datetime64[ns, Europe/Moscow]",
           "UTC+1":"datetime64[ns, Europe/London]", 
           "UTC+2":"datetime64[ns], Europe/Warsaw"

产生错误

TypeError: data is already tz-aware pytz.FixedOffset(60), unable to set specified tz: Europe/London

这是有道理的,因为确实字符串UTC+1UTC+2指示UTC偏移量,但是这是有效的:

pd.DataFrame(data["UTC+1"], dtype="datetime64[ns, Europe/London]")

如何将 分配dtypes给多个列astype()以产生:

                      Naive                      UTC+1                      UTC+2
0 2020-11-27 09:00:00+03:00  2020-11-27 09:26:24+01:00  2020-11-27 09:26:24+02:00
1 2020-11-27 10:20:00+03:00  2020-11-27 10:20:03+01:00  2020-11-27 11:44:55+02:00 

? 为什么在创建数据框时设置类型的行为与通过不同的行为astype()不同?一个转换为 UTC,另一个保持 UTC 偏移量/时区?

标签: pythonpandasdataframedatetimetimezone

解决方案


推荐阅读