纪元纳秒到正常时间

Posted

技术标签:

【中文标题】纪元纳秒到正常时间【英文标题】:epoch nanoseconds to normal time 【发布时间】:2018-12-14 23:33:30 【问题描述】:

我有一个数据

name        time
0   acn  1530677359000000000
1   acn  1530677363000000000 
2   acn  1530681023000000000 
3   acn  1530681053000000000 
4   acn  1530681531000000000 
5   acn  1530681561000000000

所以我想将time 列更改为datetime 格式。

我尝试通过执行来做到这一点:

df['time'] = pd.to_datetime(df['time'])

但它给出了不正确的输出:

输出[70]: 0 2078-09-01 09:55:28.826007552 1 2078-10-17 17:02:08.826007552 2 2194-10-10 19:42:08.826007552 3 2195-09-23 01:02:08.826007552 4 2210-11-16 10:48:48.826007552 5 2211-10-29 16:08:48.826007552

我在 python 2.7 上。请看一下。

【问题讨论】:

pd.to_datetime(1530677359000000000, unit='ns') 【参考方案1】:

矢量化,您可以使用pd.to_datetimeunit='ns'

df['datetime'] = pd.to_datetime(df['time'], unit='ns')

print(df)

  name                 time            datetime
0  acn  1530677359000000000 2018-07-04 04:09:19
1  acn  1530677363000000000 2018-07-04 04:09:23
2  acn  1530681023000000000 2018-07-04 05:10:23
3  acn  1530681053000000000 2018-07-04 05:10:53
4  acn  1530681531000000000 2018-07-04 05:18:51
5  acn  1530681561000000000 2018-07-04 05:19:21

【讨论】:

【参考方案2】:
import datetime

df.time = df.time.apply(lambda x: datetime.datetime.fromtimestamp(x / 1e9))

【讨论】:

以上是关于纪元纳秒到正常时间的主要内容,如果未能解决你的问题,请参考以下文章

以纳秒为单位测量纪元时间 - Android

log15 库将纪元时间从纳秒到秒进行记录

如何将纳秒的纪元时间转换为人类可读的?

自纪元以来的打印时间(以纳秒为单位)

在 Python 3.6.9 中以纳秒为单位获取 Epoch 时间戳

黎曼到涌入时间戳