反转为_datetime()方法以获取时间戳

2024-10-03 00:17:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个DataFrame,其中一列sensorTime表示以纳秒为单位的时间戳(currentTimeMillis()*1000000)。一个例子如下:

sensorTime
1597199687312000000
1597199687315434496
1597199687320437760
1597199687325465856
1597199687330448640
1597199687335456512
1597199687340429824
1597199687345459456
1597199687350439168
1597199687355445504

我正在使用

res['sensorTime'] = pd.to_datetime(res['sensorTime'])

如何将datetime转换回以纳秒为单位的时间戳,以便获得上面示例中的精确值


Tags: to示例dataframedatetime时间单位res例子
1条回答
网友
1楼 · 发布于 2024-10-03 00:17:02

显而易见的方法是使用astype将日期时间序列转换为Unix时间(从纪元开始的纳秒):

import pandas as pd
res = pd.DataFrame({'sensorTime': [1597199687312000000, 1597199687315434496, 1597199687320437760]})
res['sensorTime'] = pd.to_datetime(res['sensorTime'])

# back to nanoseconds / Unix time - .astype to get a pandas.series
s = res['sensorTime'].astype('int64')

print(type(s), s)
<class 'pandas.core.series.Series'> 
0    1597199687312000000
1    1597199687315434496
2    1597199687320437760
Name: sensorTime, dtype: int64

另一种选择是使用^{}

# .view to get a numpy.ndarray 
arr = res['sensorTime'].values.view('int64')

print(type(arr), arr)
<class 'numpy.ndarray'> 
[1597199687312000000 1597199687315434496 1597199687320437760]

但是要小心,它只是一个view,所以底层数据保持不变。这意味着,在这里,如果更改数据帧序列中的值,该更改也将在视图数组中可见

相关问题 更多 >