【发布时间】:2019-07-16 23:17:07
【问题描述】:
我正在尝试使用 Pandas 加载 SQuAD 数据集。我的数据集中的 JSON 元素的结构是这样的,其中以“s”结尾的所有内容都代表一个列表:
-data
-- title
-- paragraphs
-- context
--- qas
---- id
---- question
----- answers
------ answerStart
------ answerText
我想创建一个如下所示的 DataFrame:
问题标题上下文 answerText
但是,我只希望每个问题只有一个“answerText”值,这意味着每个“qas”字段只有一个答案。由于“qas”的 id 对每一对都是唯一的,因此最好创建一个“answers”数据框,然后再创建一个如下所示的数据框:
qas_id answer_id
但是,我不太确定如何最好地设置此架构。这是我尝试过的:
with open(filename) as file:
data = json.load(file)["data"]
questions = pd.io.json.json_normalize(data,record_path=["paragraphs","qas","question"],meta=["paragraphs","qas","id"])
answers = pd.io.json.json_normalize(data,record_path=["paragraphs","qas","answers"],meta=["paragraphs","qas","id"])
由于 meta 显然只允许访问顶部元素的子元素,我如何创建一个包含“qas”的“id”元素以及答案的“answerStart”和“answerText”元素的数据框?
【问题讨论】:
-
你能发布一些示例数据(即minimal, complete, verifiable example)吗?仅 JSON 模式不足以试验答案。
-
@PeterLeimbigler:当然,最好的方法是什么?树视图?链接到较小的 JSON 文件?
-
@PeterLeimbigler:这是一个较小的 JSON 文件:github.com/moonman239/Capstone-project/blob/master/…
-
终于有机会看看这个了。 JSON 标准需要双引号 (
"),而不是单引号 ('),并且您链接到的 JSON sn-p 在整个文本中被未转义的单引号和双引号损坏。你能重新格式化并重新上传吗? -
@PeterLeimbigler:这个文件可能有用,但请注意,我无法重现我的代码遇到的问题:github.com/moonman239/Capstone-project/blob/master/…
标签: json python-3.x pandas