我认为你需要将字符串转换到一个timedelta与pd.to_timedelta
然后利用基于字符串截断的floor方法的优秀dt访问器。以下是您的数据的前两行。
df['how_long_it_took_to_order'] = pd.to_timedelta(df['how_long_it_took_to_order'])
df['how_long_it_took_to_order'].dt.floor('s')
0 00:19:58
1 00:25:09
可以舍入到百分之一秒。
df['how_long_it_took_to_order'].dt.floor('10ms')
0 00:19:58.580000
1 00:25:09.100000
在这里,我创造了一些timedeltas的一个系列,然后使用dt
访问与floor
方法来降低截断到微秒。
d = pd.timedelta_range(0, periods=6, freq='644257us')
s = pd.Series(d)
s
0 00:00:00
1 00:00:00.644257
2 00:00:01.288514
3 00:00:01.932771
4 00:00:02.577028
5 00:00:03.221285
dtype: timedelta64[ns]
现在截断
s.dt.floor('s')
0 00:00:00
1 00:00:00
2 00:00:01
3 00:00:01
4 00:00:02
5 00:00:03
dtype: timedelta64[ns]
如果要截断第二的百分位做到这一点:
s.dt.floor('10ms')
0 00:00:00
1 00:00:00.640000
2 00:00:01.280000
3 00:00:01.930000
4 00:00:02.570000
5 00:00:03.220000
dtype: timedelta64[ns]
你应该考虑改变你的数据timedelta或时间戳(如果你有日期一起)从字符串。没有很好的理由把它保留为字符串。然后,你可以使用'floor'方法优秀的'dt'来截断。看到我的答案。 –