猿问

如何在熊猫中将字符串时间转换为纳秒时间

我有一个像这样的字符串变量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 位数字)。


慕村225694
浏览 158回答 1
1回答

慕桂英3389331

当您将没有日期的时间字符串提供给 时pd.to_datetime(),如在 中'09:30:00.031883382',pandas 默认将当前日期插入到结果Timestamp对象中。(Timestamp对象总是同时具有日期和时间。)出于某种原因,这种默认行为似乎放弃了纳秒,而明确提供日期(例如当前日期)会在结果中保留纳秒Timestamp:In [1]: d1 = pd.to_datetime('09:30:00.031883382')In [2]: d1Out[2]: Timestamp('2019-02-09 09:30:00.031883')In [3]: d1.nanosecondOut[3]: 0In [4]: d2 = pd.to_datetime('2019-02-09 09:30:00.031883382')In [5]: d2Out[5]: Timestamp('2019-02-09 09:30:00.031883382')In [6]: d2.nanosecondOut[6]: 382因此,一种解决方案是指定有效日期和纳秒分辨率时间。另一种解决方案是使用pd.to_timedelta代替pd.to_datetime:In [7]: d3 = pd.to_timedelta('09:30:00.031883382')In [8]: d3Out[8]: Timedelta('0 days 09:30:00.031883')In [9]: d3.nanoseconds   # timedelta uses "nanosecondS" but timestamp uses "nanosecond"Out[9]: 382
随时随地看视频慕课网APP

相关分类

Python
我要回答