将API-数据中的词典划分为单独的列



从一开始,我就需要指出显而易见的事情:我或多或少是一个完全的初学者,因此非常感谢非常具体、详细的建议和指导。

我从Canvas API中提取了数据,使用以下内容:

result = requests.get('https://canvas.gu.se/api/v1/courses/xxxxx/assignments/xxxxxx/submissions', params={"include": ["submission_history", "submission_comments"]}, headers={'Authorization': 'Bearer ' + canvas_token})

数据被格式化为json,并在Jupyter Notebook中使用panda进行处理。指定要包含的数据最终会在一列中,但应该有一种方法可以将这些字典及其截然不同的内容解压缩到单独的列中。现在看起来是这样的:

[{'id': xxxxxx, 'comment': 'Text text text text', 'author_id': 219949, 'author_name': 'Name Name', 'created_at': '2021-11-09T12:13:26Z', 'edited_at': None, 'avatar_path': '/images/users/xxxxxx-xxxxxxxx', 'author': {'id': xxxxxx, 'display_name': 'Name Name', 'avatar_image_url': 'https://canvas.gu.se/images/messages/avatar-50.png', 'html_url': 'https://canvas.gu.se/courses/xxxxx/users/xxxxxx', 'pronouns': None}}, {'id': xxxxxx, 'comment': 'Other text text text text', 'author_id': xxxxxx, 'author_name': 'Name Name', 'created_at': '2021-11-09T12:13:40Z', 'edited_at': None, 'avatar_path': '/images/users/xxxxxx-xxxxxxxx', 'author': {'id': xxxxxx, 'display_name': 'Name Name', 'avatar_image_url': 'https://canvas.gu.se/images/messages/avatar-50.png', 'html_url': 'https://canvas.gu.se/courses/xxxxx/users/xxxxxx', 'pronouns': None}}]

我想要的是为了易读性而将注释分开。我已经看过json_normalize,但无法使其发挥作用。

附带说明:检索到的数据应该包含200多名学生的数据,但我只得到了10名。知道我可能做错了什么吗?

看起来您有一个dicts的列表列表。要单独获取所有注释,只需遍历列表并使用提取注释

for my_list in df['submission_comments']:
for d in my_list:
x = d.get('comment', "")

每个评论的值将以x为单位,您可以对它做任何您想做的事情,也许可以将它放在所有评论的列表或dict中。(注意:如果d['comment']不存在,d.get('comment', "")将返回一个空字符串(。

最新更新