我有一个格式为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操作。如果这涉及大量的额外预处理,那么不处理这种情况就很好。
答案 0 :(得分:7)
为什么不先从文件中加载json,然后再从所需的子集合中创建数据框?
import json
with open(PATH, 'r') as fp:
data = json.load(fp)
df = pd.DataFrame.from_dict(data["key1"])