【问题标题】:Pandas store dict into jsonPandas 将 dict 存储到 json 中
【发布时间】:2020-12-23 23:46:29
【问题描述】:

有这样一本字典:

    thisdict = {'12': [[1, 970000009], [3, 990000547], [9, 900000007]],
          '3': [[2, 970022209], [3, 990000547]],
          '32': [[4, 94042209], [5, 40547]],
          '6575': [[3, 94334009], [2, 923200547], [6, 7807], [7, 98807], [8, 8887]],
...
     }

如何将此字典保存到 json 文件中?

我尝试了以下代码,但它不起作用:

import json
with open('results.json', 'w') as fp:
    json.dump(thisdict, fp)

这是输出中的错误:

int64 类型的对象不是 JSON 可序列化的

解决这个错误的方法是什么?

【问题讨论】:

  • 那真的是你的字典吗?我无法重现错误
  • 这是它的一个样本。这是一个很大的字典。
  • 好吧添加一个导致错误的部分
  • 请提供minimal reproducible example,以及整个错误输出。您从该错误消息中了解到什么?

标签: python json


【解决方案1】:

我重写了您的代码,更改了字典的数据类型并看到了同样的错误。

import json
import numpy as np

thisdict = {'12': [[1, 970000009], [3, 990000547], [9, 900000007]],
            '3': [[2, 970022209], [3, 990000547]],
            '32': [[4, 94042209], [5, 40547]],
            '6575': [[3, 94334009], [2, 923200547], [6, 7807], [7, 98807], [8, 8887]]}
data = list(thisdict.items())
arr = np.array(data)

with open('result.json', 'w') as fp:
    json.dump(arr, fp)

TypeError: ndarray 类型的对象不是 JSON 可序列化的

我意识到您的字典可能具有 Int64 数据类型。请检查 thisdict 的类型。

解决方案:

import json
import pandas as pd
import numpy as np

thisdict = {'12': [[1, 970000009], [3, 990000547], [9, 900000007]],
            '3': [[2, 970022209], [3, 990000547]],
            '32': [[4, 94042209], [5, 40547]],
            '6575': [[3, 94334009], [2, 923200547], [6, 7807], [7, 98807], [8, 8887]],
            }

data = list(thisdict.items())
arr = np.array(data)
df = pd.DataFrame(arr)
df.to_json('result.json')

【讨论】:

  • 谢谢。您的代码有助于解决它。 print(type(thisdict)) 命令返回 。有 thisdict[i] = x + y 来创建这个字典。这是否意味着它是一个数组?如果是这样,您在代码中显示的数组会给出该错误。像这样结构的数组,如果要存放在json文件中,有什么解决办法?
  • 嗯,你需要将数组添加到熊猫的DataFrame中,然后将其转换为json。 ``` data = list(thisdict.items()) arr = np.array(data) df = pd.DataFrame(arr) df.to_json('result.json') ``` 在此处查看完整代码:ideone.com/qRQ5QF
【解决方案2】:

您发布的代码运行良好,并且您提供的 dict 部分没有明显的 int64。

从字里行间看,这看起来像 numpy 数据,所以您的问题可能不在于 dict 值,而在于 JSON 序列化程序无法处理 numpy 数据类型。您可以在此处使用现有的解决方案来解决此问题:Python - TypeError: Object of type 'int64' is not JSON serializable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2018-06-09
    • 2021-10-06
    • 2018-02-08
    • 1970-01-01
    • 2013-12-28
    • 2018-08-11
    相关资源
    最近更新 更多