python - 如何将日期时间类型分配给数据框中的多个列并保留时间 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+1
和UTC+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 偏移量/时区?
解决方案
推荐阅读
- python - 如何在没有 sudo 的情况下运行 pip?
- android - 如何在确切的运行时间而不是在应用程序启动时询问 phonegap 插件权限?
- java - 使用包含 3rd 方 dll 的 JNI DLL 时出现 UnsatisfiedLinkException
- docker - Docker:获取容器的风筝超时
- python - 如何在 epoch 中获得最后 30 天
- javascript - 除了 NaN 之外,还有哪些其他文字值不等于它们自己
- javascript - range.getClientRects() 在 HTML 中与 textarea 一起使用时返回 0 矩形
- ios - 如何将固定字符串文本 Foo 放入粘贴缓冲区?
- javascript - 两个日期选择器,并且两者都相互连接您选择一个的日期,另一个自动选择的日期
- html - Bootstrap 表格边框在表格加载之前可见