【问题标题】:Reverse Pandas to_datetime() method to get timestamps反转 Pandas to_datetime() 方法来获取时间戳
【发布时间】:2021-04-30 16:26:27
【问题描述】:

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

sensorTime
1597199687312000000
1597199687315434496
1597199687320437760
1597199687325465856
1597199687330448640
1597199687335456512
1597199687340429824
1597199687345459456
1597199687350439168
1597199687355445504

我正在将此列转换为 datetime 使用

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

如何将日期时间转换回以纳秒为单位的时间戳,以便获得如上例所示的准确值?

【问题讨论】:

  • 这能回答你的问题吗? Convert pandas DateTimeIndex to Unix Time?
  • @MrFuppes 你的第二个链接措辞。它是res['sensorTime'] = res['sensorTime'].astype(np.int64)。请提交答案,以便我接受。

标签: python pandas dataframe datetime python-datetime


【解决方案1】:

这样做的明显方法是使用 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

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

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

但要小心,它只是一个view,所以基础数据保持不变。这意味着在这里,如果您更改数据框系列中的值,则此更改也将在视图数组中可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2021-09-23
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多