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
添加回答
舉報