为什么pandas.read\u json读取的字符串整数不正确?

2024-09-29 09:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

下面是一个简单的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中都试过了,其他的都不错

如果我这样做,我会得到正确的身份证:

with open('Siva.json') as data_file:    
    data = json.load(data_file)
df = json_normalize(data)

但是我想理解为什么pandas不能以一种奇怪的方式正确处理json


Tags: 对象idjsonpandasdfdatasessionas
1条回答
网友
1楼 · 发布于 2024-09-29 09:24:19

这是一个已知问题:

import pandas as pd

df = pd.read_json('test.json', dtype={'id': 'int64'})

                  id     session  transactionId                              ts               timestamp   sku  price  qty                                                                                  ex
 7012104767417052471 -1332751885      515934477  2019-10-30 12:15:40 AM (+0000) 2019-10-30 00:15:40.564  1234  39.99    1  [{'expId': 1007519, 'versionId': 100042440, 'variationId': 100076318, 'value': 1}]

相关问题 更多 >