gpt4 book ai didi

python - 如何在 read_json 上定义数据类型?

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:38 25 4
gpt4 key购买 nike

我正在尝试将以下 JSON 读入 DataFrame:

[{"col1": 900000000000000000000}]

当我运行 pd.read_json('sample.json') 时收到错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/site-packages/pandas/io/json/json.py", line 366, in read_json
return json_reader.read()
File "/usr/lib/python3.6/site-packages/pandas/io/json/json.py", line 467, in read
obj = self._get_object_parser(self.data)
File "/usr/lib/python3.6/site-packages/pandas/io/json/json.py", line 484, in _get_object_parser
obj = FrameParser(json, **kwargs).parse()
File "/usr/lib/python3.6/site-packages/pandas/io/json/json.py", line 576, in parse
self._parse_no_numpy()
File "/usr/lib/python3.6/site-packages/pandas/io/json/json.py", line 793, in _parse_no_numpy
loads(json, precise_float=self.precise_float), dtype=None)
ValueError: Value is too big

我尝试了几种不同的方法来定义读取时的数据类型,例如:

  • df = pd.read_json('sample.json', dtype={'col1': np.dtype('object')})
  • df = pd.read_json('sample.json', dtype={'col1': np.object})
  • df = pd.read_json('sample.json', dtype={'col1': str})

有趣的是,如果我将输入更改为以下内容,它在 dtype 设置为 float64 时工作正常:[{"col1": "900000000000000000000"}];但不幸的是,这不是我的输入。

知道为什么我无法在读取时正确定义数据类型吗?谢谢。

最佳答案

首先,使用 json.loads 并加载所有没有问题的数据(在本例中,除了 col1 之外的所有数据)。

import json

json_data = '''[{"col1": 900000000000000000000, "col2": "abc"}, {....}]'''
data = json.loads(json_data)

c = list(set(data[0].keys()) - {'col1'})
df = pd.DataFrame.from_records(data, columns=c)

现在,我们必须手动提取 col1 的数据,将其转换为 dtype=object Series,然后添加

df.insert(0, 'col1', pd.Series([d['col1'] for d in data], dtype=object))

df
col1 col2
0 900000000000000000000 abc

关于python - 如何在 read_json 上定义数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com