将 UNIX 时间从纳秒转换为秒

Converting UNIX time from Nanoseconds to Seconds

我正在从一个以纳秒为单位的 UNIX 时间格式的服务中读取时间戳作为字符串。这引入了一个明显的问题,因为我无法执行标准操作来将字符串标准化为秒,因为它们有多大。这些字符串之一的示例是 '1589212802642680000' 或科学计数法中的 1.58921E+18。

我正在尝试这样的事情:convert_fills_df['timeStamp'] = convert_fills_df.timeStamp.apply(lambda x: UNIX_EPOCH + (float(x)/1000000000))。但是当我尝试这个时我溢出了浮动对象;有没有我可以在不损失精确度的情况下进行的字符串操作?就我的目的而言,纳秒不是必需的(尽管我很欣赏它们的彻底性)。如果我能保持纳秒级那也很好,但这不是必需的。

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

前10位代表秒,后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]