Python 为什么pandas.read_json读取的字符串整数不正确?

Python 为什么pandas.read_json读取的字符串整数不正确?,python,json,pandas,Python,Json,Pandas,我不是那种喜欢夸大其词的人,但我真的被这个错误难住了,我相信你也会的 下面是一个简单的json对象: [ { "id": "7012104767417052471", "session": -1332751885, "transactionId": "515934477", "ts": "2019-10-30 12:15:40 AM (+0000)", "timestamp": 1572394540564,

我不是那种喜欢夸大其词的人,但我真的被这个错误难住了,我相信你也会的

下面是一个简单的json对象:

[
    {
        "id": "7012104767417052471",
        "session": -1332751885,
        "transactionId": "515934477",
        "ts": "2019-10-30 12:15:40 AM (+0000)",
        "timestamp": 1572394540564,
        "sku": "1234",
        "price": 39.99,
        "qty": 1,
        "ex": [
            {
                "expId": 1007519,
                "versionId": 100042440,
                "variationId": 100076318,
                "value": 1
            }
        ]
    }
]
现在,我将文件保存到ex.json中,然后执行以下python代码:

import pandas as pd

df = pd.read_json('ex.json')
当我看到数据帧时,我的id值已从“7012104767417052471”更改为“7012104767417052160”

有人知道python为什么会这样做吗?我在node、js甚至excel中试用了它,在其他方面都很不错

如果我这样做,我会得到正确的id:

with open('Siva.json') as data_file:    
    data = json.load(data_file)
df = json_normalize(data)
但我想理解为什么熊猫不能以一种奇怪的方式正确处理json

这是一个已知的问题:
  • 自2018-04-04年以来,这一直是一个公开的问题
  • 如问题中所述。明确指定
    dtype
    以获得正确的数字
将熊猫作为pd导入
df=pd.read_json('test.json',dtype={'id':'int64'})
id会话事务id ts时间戳sku价格数量ex
7012104767417052471-1332751885 515934477 2019-10-30 12:15:40上午(+0000)2019-10-30 00:15:40.564 1234 39.991[{'expId':1007519,'versionId':100042440,'variationId':100076318,'value':1}]