Python 为什么pandas.read_json读取的字符串整数不正确?
我不是那种喜欢夸大其词的人,但我真的被这个错误难住了,我相信你也会的 下面是一个简单的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,
[
{
"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}]