最近發現比較坑的問題,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)
輸出的結果是:

研究了半天以后在:https://github.com/pandas-dev/pandas/issues/20608 和 https://github.com/pandas-dev/pandas/issues/33766 找到了答案。
主要原因就是默認情況,pandas會把整數轉換為float浮點型,然后再轉為int類型,類似:

解決辦法就是讀取數據的時候加一個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)
輸出結果就正常了

贊
0
賞


