如何在df中转换此嵌套JSON文件?
我必须为一个项目处理以下问题: 特别是,我需要获得一个用于将这些数据格式化为NLP任务中神经网络的输入的文件。Json格式如下所示:如何在df中转换此嵌套JSON文件?,json,pandas,pytorch,Json,Pandas,Pytorch,我必须为一个项目处理以下问题: 特别是,我需要获得一个用于将这些数据格式化为NLP任务中神经网络的输入的文件。Json格式如下所示: json file ├── "data" │ └── [i] │ ├── "paragraphs" │ │ └── [j] │ │ ├── "context": "paragraph text" │ │ └
json file
├── "data"
│ └── [i]
│ ├── "paragraphs"
│ │ └── [j]
│ │ ├── "context": "paragraph text"
│ │ └── "qas"
│ │ └── [k]
│ │ ├── "answers"
│ │ │ └── [l]
│ │ │ ├── "answer_start": N
│ │ │ └── "text": "answer"
│ │ ├── "id": "<uuid>"
│ │ └── "question": "paragraph question?"
│ └── "title": "document id"
└── "version": 1.1
我努力尝试使用.json_normalize方法,但没有得到任何结果。我注意到,我的大多数尝试(那些没有以错误结束的尝试)都以将“数据”和“版本”识别为索引,并将文本的其余部分识别为唯一对象而告终,如下所示:
f = open("SQuAD_it-test.json", "r",encoding="Latin-1" )
data = json.load(f)
df = pd.json_normalize(data)
df.sample(1)
data version
0 [{'paragraphs': [{'qas': [{'question': 'Quando... 1.1
如果我尝试可视化更多的样本,我会出现一个错误,它告诉我人口只有1
我想要的输出是这样的,选择要使用的索引可以位于树的不同级别:
df.sample(5)
title context question text answer_start
str1 str6 str11 str16 N1
str2 str7 str12 str17 N2
str3 str8 str13 str13 N3
str4 str9 str14 str18 N4
str5 str10 str15 str19 N5
我也研究过的论点
但是我不能完全理解这个解释。您能帮助我吗?由于给定的json有许多嵌套文件,我们可以使用
record\u path
和meta
参数来获取所需的数据帧:
df = pd.json_normalize(data, record_path=['data', 'paragraphs', 'qas', 'answers'],
meta=[['data','title'], ['data', 'paragraphs','context'],
['data', 'paragraphs', 'qas','question']])
请注意,输出键的顺序与所需输出表中给出的顺序不同。此外,键的名称将略有不同(完全限定)
输出:
Index(['text', 'answer_start', 'data.title', 'data.paragraphs.context',
'data.paragraphs.qas.question'],
dtype='object')
谢谢你,我发现(对于那些可能感兴趣的人来说)这种方法可以给df的列起新名字:df.columns=['text','answer_start','title','context','question']我没有发现如何改变顺序,但我认为这不相关
Index(['text', 'answer_start', 'data.title', 'data.paragraphs.context',
'data.paragraphs.qas.question'],
dtype='object')