爲了比較起見,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(這就是熊貓如何在時間戳下存儲時間戳)。 –