将UNIX时间从纳秒转换为秒。

问题描述 投票:0回答:1

我从一个以纳秒为单位的UNIX时间格式的服务中读取时间戳作为字符串。 这就带来了一个明显的问题,那就是我无法进行标准操作来将这些字符串标准化为秒,因为它们是如此之大。 其中一个字符串的例子是 '1589212802642680000' 或1.58921E+18的科学符号。

我试着用这样的方法。convert_fills_df['timeStamp'] = convert_fills_df.timeStamp.apply(lambda x: UNIX_EPOCH + (float(x)/1000000000)). 但是当我尝试这样做的时候,我溢出了float对象;有没有一种字符串操作,我可以在不损失精确到秒的情况下进行? 对于我的目的来说,纳秒是没有必要的(虽然我很欣赏他们的彻底性)。 如果我可以保留纳秒,那也很好,但这不是必要的。

我只想把时间转换为24小时时钟格式的人类可读格式。

python-3.x unix-timestamp
1个回答
1
投票

前10位代表秒,后面的数字代表毫秒、微秒和纳秒的精度。

要保留所有信息,你可以插入 . 的正确位置,并将该字符串传递给 pd.to_datetime。

df = pd.DataFrame({'ns': ['1589212802642680000']}) 
pd.to_datetime(df.ns.str[:10] + '.' + df.ns.str[10:], unit='s')
# outputs
0   2020-05-11 16:00:02.642679930
Name: ns, dtype: datetime64[ns]
© www.soinside.com 2019 - 2024. All rights reserved.