Python—通过用户定义函数解析JSON数据
我有一个 在JSON文本文件中,有id、title、context、question、is_impossable、answer_start和text等列 我试图将其读入熊猫数据帧。我不熟悉Python和JSON。让我们来看看函数定义 这是我的密码Python—通过用户定义函数解析JSON数据,python,json,pandas,Python,Json,Pandas,我有一个 在JSON文本文件中,有id、title、context、question、is_impossable、answer_start和text等列 我试图将其读入熊猫数据帧。我不熟悉Python和JSON。让我们来看看函数定义 这是我的密码 def squad_json_pd_df(json_dict): mylistsize = len((list(json_normalize(json_dict,'data')['title']))) row = [] for
def squad_json_pd_df(json_dict):
mylistsize = len((list(json_normalize(json_dict,'data')['title'])))
row = []
for i in range(0,mylistsize):
data = [c for c in json_dict['data']][i]
df = pd.DataFrame()
data_paragraphs = data['paragraphs']
mytitle = data['title']
for article_dict in data_paragraphs:
for answers_dict in article_dict['qas']:
for answer in answers_dict['answers']:
row.append((
answers_dict['id'],
mytitle,
article_dict['context'],
answers_dict['question'],
answers_dict['is_impossible'],
answer['answer_start'],
answer['text']
))
df = pd.concat([df, pd.DataFrame.from_records(row, columns=['id', 'title','context', 'question','is_impossible', 'answer_start', 'answer'])], axis=0, ignore_index=True)
df.drop_duplicates(inplace=True)
return df
with open(dev_datapath) as file:
dev_dict = json.load(file)
dev_df = squad_json_pd_df(dev_dict)
所以这里的问题是-is_Impossible列中既有真值也有假值(当我在文本文件中看到它时)。但在我加载熊猫数据帧后,我只能看到虚假记录
我对这个问题的理解是——对于真实记录,JSON文件结构可能不同,而我没有在Python中正确解析它
不可能的错误结构如下所示
不可能的真实结构如下所示
你之所以没有得到“True”-s,是因为它们在不同的json标记下-它们在“似是而非的答案”下,而不是我认为的答案下。在您的代码中,答案dict仅从json中的“answers”标记中提取-因此您从未实际循环过似是而非的答案列表,在该列表中,标记将被设置为True您能为json行提供一个示例吗?我想你们中的很多人都可以用更简单的东西来代替for循环,比如数据。get('parations',{})。get('qas',{})。get('answers',{})。get('id),比如第一行-对不起,我可以看到文件…@AnnaSemjén现在把它添加到问题中了。