API爬取转DataFrame格式异常求助:目标数据接口处理问题
解决方案
你的问题大概率是因为data['rows']中存在嵌套的JSON结构,直接用pd.DataFrame()转换会保留嵌套对象,导致格式不符合预期。可以通过以下步骤解决:
- 第一步:先打印
data1的部分内容,确认嵌套字段的结构:
import requests import pandas as pd response = requests.get("https://ditppu.menlhk.go.id/apippu/gis/sebaranEnergi/tahun/2022/param//kategori//subkategori/") data = response.json() data1 = data['rows'] # 打印第一条数据查看结构 print(data1[0])
- 第二步:使用
pd.json_normalize()扁平化嵌套数据,替代直接创建DataFrame:
# 替换原DataFrame创建代码 df = pd.json_normalize(data1) # 如果有多层嵌套,可以指定sep参数自定义分隔符 # df = pd.json_normalize(data1, sep='_')
- 第三步:根据需求清理数据,比如过滤无用列、重命名列名:
# 示例:保留需要的列 keep_columns = ['id', 'nama', 'latitude', 'longitude', 'jenis_energi.nama'] df = df[keep_columns] # 重命名嵌套列名 df.rename(columns={'jenis_energi.nama': 'jenis_energi'}, inplace=True)
这样处理后,嵌套的字段会被展开为平级列,DataFrame的格式就能符合预期了。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

