如何将GraphQL API获取的数据正确格式化为Pandas DataFrame
你当前的输出不符合预期,是因为GraphQL返回的edges数组中每个元素都是嵌套结构:外层是node键,对应的值里又嵌套了creatorPerson字典,直接传入pd.DataFrame()只会把整个node字典作为单列的值,无法自动展开嵌套层级。
方法1:手动提取字段(逻辑最直观,适合字段少的场景)
直接遍历edges数组,提取你需要的字段构造新的列表,再转DataFrame,修改后的完整脚本如下:
import requests import json import pandas as pd url = 'https://mygraphqlserver.com/graphql/' query = """{ resources { edges { node { id creatorPerson { firstName }} } } }""" r = requests.post(url, json={'query': query}) json_data = json.loads(r.text) # 核心修改逻辑:手动提取目标字段 processed_data = [] for edge in json_data['data']['resources']['edges']: node = edge['node'] processed_data.append({ 'id': node['id'], 'creator_first_name': node['creatorPerson']['firstName'] }) resources_output = pd.DataFrame(processed_data) print(resources_output)
输出为规整的两列DataFrame:
id creator_first_name 0 file/pt0u8h901qni3d Jérémy 1 file/f218c8wn4onncj Jérémy 2 file/i1y7pjk7a6xy2d Jérémy
方法2:用pd.json_normalize自动展平(适合嵌套层级多、字段多的场景)
pandas内置的json_normalize方法可以自动展开嵌套的JSON结构,不需要手动遍历,替换原来的DataFrame生成逻辑即可:
resources_output = pd.json_normalize(json_data['data']['resources']['edges']) # 可选操作:修改列名更简洁 resources_output.columns = ['id', 'creator_first_name']
内容的提问来源于stack exchange,提问作者Mapper
相关产品推荐
相关产品推荐

