最近发现比较坑的问题,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)
输出结果就正常了