【发布时间】:2021-08-08 22:17:25
【问题描述】:
我有以下数据框:
df= {'DateTime': {0: '2017-08-02T00:00:00Z', 1: '2017-08-02T00:00:00.050Z', 2: '2017-08 02T00:00:00.100Z', 3: '2017-08-02T00:00:00.150Z', 4: '2017-08-02T00:00:00.200Z', 5: '2017-08 02T00:00:00.250Z', 6: '2017-08-02T00:00:00.300Z', 7: '2017-08-02T00:00:00.350Z', 8: '2017-08 02T00:00:00.400Z', 9: '2017-08-02T00:00:00.450Z', 10: '2017-08-02T00:00:00.500Z', 11: '2017-08 02T00:00:00.550Z', 12: '2017-08-02T00:00:00.600Z', 13: '2017-08-02T00:00:00.650Z', 14: '2017-08 02T00:00:00.700Z', 15: '2017-08-02T00:00:00.750Z', 16: '2017-08-02T00:00:00.800Z', 17: '2017-08 02T00:00:00.850Z', 18: '2017-08-02T00:00:00.900Z', 19: '2017-08-02T00:00:00.950Z', 20: '2017-08-02T00:00:01Z'}}
我想将“DateTime”列转换为datetime 格式,但问题是字符串具有不同的模式。例如,第一行的格式为"%Y-%m-%dT%H:%M:%SZ",但第2-19行的格式为"%Y-%m-%dT%H:%M:%S.%fZ",第20行的格式为"%Y-%m-%dT%H:%M:%SZ"。这种列如何转换为日期时间?
【问题讨论】:
-
您真的需要指定格式吗?
df.DateTime.apply(pd.to_datetime)没有任何格式设置似乎工作得很好...... -
正确!但是输出就像 2017-08-02 00:00:00+00:00, 2017-08-02 00:00:00.050000+00:00, ...... +00 有没有问题: 00?
-
我对日期时间对象没有太多经验,但我认为这不是问题,转换为日期时间后,您可以使用
df.DateTime.dt.tz_localize(None)摆脱时区。 -
@fsimonjetz 你应该添加这个作为答案 ;-) 接受的一个过于复杂的事情恕我直言。 +00:00 表示 UTC,因为您的输入中有一个 Z(格式是 ISO 8601 btw.,Z 代表祖鲁时间),所以这是绝对正确的。