为了比较起见,Pandas如何存储漂浮物?我跑了一个简单的检查值,它返回了我的预期,但结果与我的查询/比较不一样:熊猫漂浮比较
为什么每个时间点的值都不一样?
我试着重新运行这个,先把这个列转换成int
然后比较结果什么都没有。
为了比较起见,Pandas如何存储漂浮物?我跑了一个简单的检查值,它返回了我的预期,但结果与我的查询/比较不一样:熊猫漂浮比较
为什么每个时间点的值都不一样?
我试着重新运行这个,先把这个列转换成int
然后比较结果什么都没有。
你漂浮在纪元以来毫微秒,所以要转换试试这个:
代码;
df.time = df.time.astype('datetime64[ns]')
测试代码:
df = pd.DataFrame([1484314274417920512., 1484314274417620224.],
columns=['time'])
print(df)
df.time = df.time.astype('datetime64[ns]')
print(df)
结果:
time
0 1.484314e+18
1 1.484314e+18
time
0 2017-01-13 13:31:14.417920512
1 2017-01-13 13:31:14.417620224
但是:
当您从原始数据源进行转换时,问题很可能出现。将int64转换为float64已经失去了一些精度,所以将它转换为纳秒,可能仍然不能满足你的需求。有些事情可以做到:
直接执行原始转换为int64,以免失去精度。
如果不需要纳秒,则将时间戳四舍五入到微秒或毫秒。
你知道大多数浮点运算如何涉及舍入吗?这甚至包括整数到浮点数的转换。你的int变圆了。 – user2357112
不使用浮点时间戳。使用int64(这就是熊猫如何在时间戳下存储时间戳)。 –