​pandas.read_json会修改长整数的值解决办法

2023年12月6日10:50:20 发表评论 782 ℃

最近发现比较坑的问题,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: