我在一个数据帧中有几秒钟的时间,比如:
s = 122
我想将其转换为以下格式:
00:02:02.0000
为此,我尝试通过以下方式使用to_datetime:
pd.to_datetime(s, format='%H:%M:%S.%f')
但是这不起作用:
ValueError:时间数据122与格式'%H:%M:%S.%f'(匹配)不匹配
我也尝试使用unit='ms'
而不是格式,但是然后我得到了时间之前的日期。
如何修改我的代码以获得所需的转换?
如果可能的话,它需要在数据框中使用熊猫来完成。
编辑:下面的jezrael和MedAli解决方案都是有效的,但是Jezrael解决方案的优点是不仅可以使用整数,还可以使用Datetime.time作为输入!
答案 0 :(得分:2)
使用to_timedelta
并将秒转换为nanoseconds
:
df = pd.DataFrame({'sec':[122,3,5,7,1,0]})
df['t'] = pd.to_timedelta(df['sec'] * 10**9)
print (df)
sec t
0 122 00:02:02
1 3 00:00:03
2 5 00:00:05
3 7 00:00:07
4 1 00:00:01
5 0 00:00:00
答案 1 :(得分:1)
您可以按以下方式编辑代码以获得所需的结果:
In [10]: df
Out[10]:
sec time
0 110 00:01:50
1 3 00:00:03
2 5 00:00:05
3 7 00:00:07
4 1 00:00:01
5 0 00:00:00
输出:
loadcountries