我有一个pandas数据帧列,pandas目前认为它是一个对象。它被写成“58:42.5”,这是分钟然后秒和几分之一秒。我想将其转换为时间类型,以便我可以减去我需要的两个时间列来获得持续时间。
我试过了:
merged['started_at'] = pd.to_datetime(merged['started_at'],format='%M:%S').dt.time
然而,这会返回一个错误,指出.5未被转换。 (ValueError:未转换的数据仍然是:.5)。我可以将整个两列时间数据转换为正确的格式,这样我最终可以用它们进行数学运算。
我的专栏看起来像:
started_at,ended_at
58:42.5,00:02.3
00:55.5,02:13.9
感谢您的帮助。
答案 0 :(得分:0)
您可以转换为timedelta
而无需指定格式:
x = '58:42.5'
res = pd.to_timedelta('00:'+x)
Timedelta('0 days 00:58:42.500000')
此转换可以轻松应用于一系列:
merged['started_at'] = pd.to_timedelta('00:' + merged['started_at'], errors='coerce')
您的后续操作,例如timedelta
个对象之间的差异,应该自然而然。