?pandas.read_json會修改長整數的值解決辦法

2023年12月6日10:50:20 發表評論 3,107 ℃

最近發現比較坑的問題,pandas.read_json在讀取長整數的時候會篡改數字。

具體的代碼如下:

import json
import pandas as pd
data = {
    "id1": "3661430294729648121",
    "id2": "1298519559306190850",
    "id3": "9999999999999999",
}
df = pd.read_json(json.dumps(data), orient='index')
print(df)

輸出的結果是:

?pandas.read_json會修改長整數的值解決辦法

研究了半天以后在:https://github.com/pandas-dev/pandas/issues/20608 和 https://github.com/pandas-dev/pandas/issues/33766 找到了答案。

主要原因就是默認情況,pandas會把整數轉換為float浮點型,然后再轉為int類型,類似:

?pandas.read_json會修改長整數的值解決辦法

解決辦法就是讀取數據的時候加一個dtype={},然后代碼如下:

import json
import pandas as pd
data = {
    "id1": "3661430294729648121",
    "id2": "1298519559306190850",
    "id3": "9999999999999999",
}
df = pd.read_json(json.dumps(data), orient='index', dtype={})
print(df)

輸出結果就正常了

?pandas.read_json會修改長整數的值解決辦法

【騰訊云】云服務器、云數據庫、COS、CDN、短信等云產品特惠熱賣中

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: