You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从JSON提取特征并规整为行列结构?Python Pandas实操问题

解决JSON归一化到DataFrame列的问题

核心问题

你两次归一化的操作逻辑有误,导致最终DataFrame里的id、name等字段并非直接作为列存在,而是嵌套在单元格的字典中,所以调用explode('id')会触发KeyError。

最简单的归一化方法

根据你提供的my_list结构,分两种情况处理:

情况1:每个response是完整的车辆字典(如你给出的{'id': '21201', 'name': ..., 'externalIds': ...})

直接对my_list做一次归一化即可,自动将顶层字段和嵌套字段展开为列:

import pandas as pd
from pandas import json_normalize

df_vehicles = json_normalize(my_list)

处理后:

  • id、name会直接成为DataFrame的列
  • 嵌套的externalIds.serial会生成对应的列名
  • gps列保留为列表类型(若需展开gps的内容,可参考下方补充操作)

情况2:每个response包含data字段(即response = {'data': [车辆字典列表]})

先提取所有data中的车辆字典,再做归一化:

# 先合并所有data里的字典列表
all_vehicle_data = []
for item in df_vehicles['data']:
    all_vehicle_data.extend(item)

# 归一化合并后的列表
df_final = json_normalize(all_vehicle_data)

或者用更简洁的写法:

df_final = json_normalize(df_vehicles['data'].explode().tolist())

补充:展开GPS嵌套数据

如果需要把gps字段里的时间、经纬度等也展开为列,可以先explode再归一化:

# 先展开gps列表为单独行
df_exploded = df_vehicles.explode('gps', ignore_index=True)
# 归一化所有字段(包括gps里的嵌套内容)
df_full = json_normalize(df_exploded.to_dict('records'))

内容的提问来源于stack exchange,提问作者ASH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:17:32