亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在熊貓中將字符串時間轉換為納秒時間

如何在熊貓中將字符串時間轉換為納秒時間

慕村225694 2021-11-02 20:19:17
我有一個像這樣的字符串變量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 位數字)。
查看完整描述

1 回答

?
慕桂英3389331

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


查看完整回答
反對 回復 2021-11-02
  • 1 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號