1 回答
TA贡献2036条经验 获得超8个赞
当您将没有日期的时间字符串提供给 时pd.to_datetime(),如在 中'09:30:00.031883382',pandas 默认将当前日期插入到结果Timestamp对象中。(Timestamp对象总是同时具有日期和时间。)出于某种原因,这种默认行为似乎放弃了纳秒,而明确提供日期(例如当前日期)会在结果中保留纳秒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:
In [7]: d3 = pd.to_timedelta('09:30:00.031883382')
In [8]: d3
Out[8]: Timedelta('0 days 09:30:00.031883')
In [9]: d3.nanoseconds # timedelta uses "nanosecondS" but timestamp uses "nanosecond"
Out[9]: 382
添加回答
举报