python - 如何从 json 文件中读取键值对作为 pandas 数据帧?

标签 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 操作。如果这涉及大量的额外预处理,那么不处理这种情况也没关系。

最佳答案

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

import json 

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

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

关于python - 如何从 json 文件中读取键值对作为 pandas 数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60065450/

相关文章:

javascript - 在 Express 应用程序初始化期间加载 JSON 文件

python - 在 pandas 数据框中重新采样 Hz

javascript - json 数据在服务器上不起作用

java - Spring MVC 在 POST 上不支持内容类型 'application/json'

python - 如何创建 MultiIndex 的笛卡尔积,包括范围内但不在索引中的日期

python - pandas 直方图 by : possible to make axes uniform?

python - nltk pos 标记器看起来包含 '.'

python - 在Python字符串中转义 "\"字符[需要避免十六进制编码]

python - 在文本文件中的某些单词后提取数字

python - 无法在 virtualenv 中 pip 安装 uwsgi