python - 如何在熊猫中将字符串时间转换为纳秒时间
问题描述
我有一个字符串变量,看起来像这样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 位数字)。
解决方案
当你给一个没有日期的时间字符串时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
推荐阅读
- visual-studio-code - 我无法使用 CTRL + C 从 Visual Studio 复制代码
- python - to_sql() 错误:TypeError:预期字节,找到 str
- python - 如何在 Python 3 中使用热键 (ctrl + n) 与子进程 (VLC) 一起运行
- unity3d - 如何在 Unity 的 if 语句中使用 Input.GetMouseButtonDown
- html - 在具有多个文本节点的单个元素中选择文本节点
- angular - 如何专注于 PrimeNG p 按钮
- javascript - 无法将日期字段从 sendKeys 发送到 Javascript Selenium 中的 ion-datetime 字段
- python - 如何在火花流中添加 2 行具有相同键(列值)的行?
- html - 如何在 HTML 中为桌面透明 nvabar 并在移动屏幕的切换上显示相同的中殿栏。?
- c# - 更改 ListView 中文本的颜色