我有一个跨列和列内具有混合日期格式的框架。当试图将它们从对象类型转换为日期时间类型时,由于列date1具有混合格式,我得到了一个错误。我看不出在这种情况下如何修复它。另外,我如何从两列(date1和date2)中删除秒?
下面是我尝试的代码:
df = pd.DataFrame(np.array([[10, "2021-06-13 12:08:52.311 UTC", "2021-03-29 12:44:33.468"],
[36, "2019-12-07 12:18:02 UTC", "2011-10-15 10:14:32.118"]
]),
columns=['col1', 'date1', 'date2'])
df
>>
col1 date1 date2
0 10 2021-06-13 12:08:52.311 UTC 2021-03-29 12:44:33.468
1 36 2019-12-07 12:18:02 UTC 2011-10-15 10:14:32.118
# Converting from object to datetime
df["date1"]= pd.to_datetime(df["date1"], format="%Y-%m-%d %H:%M:%S.%f UTC")
df["date2"]= pd.to_datetime(df["date2"], format="%Y-%m-%d %H:%M:%S.%f")
>>
ValueError: time data '2019-12-07 12:18:02 UTC' does not match format '%Y-%m-%d %H:%M:%S.%f UTC' (match)
1条答案
按热度按时间8i9zcol21#
对于转换为日期时间,我发现infer_datetime_format很有帮助。不能让它在完整的框架上工作,它能够一次转换一列。
如果至少所有格式都以“%Y-%m-%d %H:%M”格式开头,那么您可以将所有字符串切片到该点并使用它们
为了摆脱你的日期时间值中的秒,而不是简单地摆脱这些值,你可以使用round,你也可以检查floor和ceil任何更适合你的用例。