我必须为一个项目与this database打交道:
特别是,我需要获取pandas df来格式化这些数据,将其作为NLP任务中神经网络的输入。Json格式如下:
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方法,但是我没有得到任何结果。我注意到,我的大多数尝试(那些不会以错误结束的尝试)最终只将"data“和"version”识别为索引,并将文本的其余部分识别为唯一的对象,如下所示:
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_normalize的论点。
但是我不能完全理解其中的解释。你能帮我一下吗?
发布于 2021-05-01 12:17:51
由于给定的json有许多嵌套的文件,我们可以使用record_path
和meta
参数来获得所需的数据帧:
df = pd.json_normalize(data, record_path=['data', 'paragraphs', 'qas', 'answers'],
meta=[['data','title'], ['data', 'paragraphs','context'],
['data', 'paragraphs', 'qas','question']])
请注意,输出键的顺序与所需输出表中的顺序不完全相同。此外,键的名称略有不同(完全限定)。
print(df.keys())
输出:
Index(['text', 'answer_start', 'data.title', 'data.paragraphs.context',
'data.paragraphs.qas.question'],
dtype='object')
https://stackoverflow.com/questions/67345054
复制相似问题