我从一个以纳秒为单位的UNIX时间格式的服务中读取时间戳作为字符串。 这就带来了一个明显的问题,那就是我无法进行标准操作来将这些字符串标准化为秒,因为它们是如此之大。 其中一个字符串的例子是 '1589212802642680000'
或1.58921E+18的科学符号。
我试着用这样的方法。convert_fills_df['timeStamp'] = convert_fills_df.timeStamp.apply(lambda x: UNIX_EPOCH + (float(x)/1000000000))
. 但是当我尝试这样做的时候,我溢出了float对象;有没有一种字符串操作,我可以在不损失精确到秒的情况下进行? 对于我的目的来说,纳秒是没有必要的(虽然我很欣赏他们的彻底性)。 如果我可以保留纳秒,那也很好,但这不是必要的。
我只想把时间转换为24小时时钟格式的人类可读格式。
前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]