我有一个类似09:30:00.031883382
的字符串变量。我想将其转换为时间格式。我尝试过
pd.to_datetime(pd.time, unit ='ns').dt.time
和
pd.to_datetime(pd.time, format ="%H:%M:%S.%f").dt.time
。
他们两个都将时间舍入为09:30:00.031883
。任何人都可以教我如何将此字符串转换为时间格式,但请确保时间精确到纳秒级(秒后保留所有9位数字)。
答案 0 :(得分:0)
当您为pd.to_datetime()
提供没有日期的时间字符串时,如'09:30:00.031883382'
一样,熊猫默认情况下会将当前日期插入到生成的Timestamp
对象中。 (Timestamp
对象总是同时具有日期和时间。)由于某种原因,此默认行为似乎丢弃了纳秒,而显式提供日期(例如当前日期)则在结果{{1}中保留了纳秒。 }:
Timestamp
一种解决方案是指定一个有效的日期以及纳秒级的时间。
另一种解决方案是使用In [1]: d1 = pd.to_datetime('09:30:00.031883382')
In [2]: d1
Out[2]: Timestamp('2019-02-09 09:30:00.031883')
In [3]: d1.nanosecond
Out[3]: 0
In [4]: d2 = pd.to_datetime('2019-02-09 09:30:00.031883382')
In [5]: d2
Out[5]: Timestamp('2019-02-09 09:30:00.031883382')
In [6]: d2.nanosecond
Out[6]: 382
代替pd.to_timedelta
:
pd.to_datetime