首页 > 解决方案 > 如何从 json 文件中读取键值对作为 pandas 数据框?

问题描述

我有一个 JSON 文件(存储在 PATH 中),格式如下:

{"key1":[{"col1": "1", "col2": "first", "col3": "1", "col4": "a"}, {"col1": "1", "col2": "first", "col3": "2", "col4": "b"}, {"col1": "1", "col2": "first", "col3": "3", "col4": "c"}, {"col1": "2", "col2": "second", "col3": "1", "col4": "d"}], "key2":[], "key3": {} }

我想从 key1 的值创建一个数据框df ,如下所示:

col1    col2    col3    col4
  1    first     1       a
  1    first     2       b
  1    first     1       c
  1    second    1       d

现在,我写了以下单行代码来处理这种情况:

pd.DataFrame(pd.read_json(PATH, orient='index').T['key1'].to_dict()).T

我意识到我可能会做很多不必要的操作来获得所需的数据结构,并且想知道是否有更有效的方法来实现这一点?

额外

虽然肯定不是主要问题,但我想知道是否还有一种方法可以处理我有一个附加键的值不是集合的情况(假设在上面的 JSON 中我们也有 "key4": "hello" )。目前,我的代码无法处理这种情况,因为这里不能直接应用 pandas 操作。如果这涉及大量的额外预处理,那么如果不处理这种情况就可以了。

标签: pythonjsonpandas

解决方案


为什么不先从文件中加载 json,然后从您想要的子集合中创建数据框?

import json 

with open(PATH, 'r') as fp:
    data = json.load(fp)

df = pd.DataFrame.from_dict(data["key1"])

推荐阅读