如何从json文件中读取键值对作为熊猫数据框?

时间:2020-02-04 20:58:52

标签: python 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”: “你好”)。当前,我的代码无法处理这种情况,因为无法在此处直接应用pandas操作。如果这涉及大量的额外预处理,那么不处理这种情况就很好。

1 个答案:

答案 0 :(得分:7)

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

import json 

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

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