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

Pandas嵌套JSON转Dataframe问题:ab_id列位置及空列异常求助

解决Pandas嵌套JSON规范化的两个问题

问题根源分析

你当前的代码存在两个核心错误:

  1. meta参数配置错误:你把activity数组内的字段(msn、ica等)当成了外层元数据,导致字段名冲突,必须依赖record_prefix避免报错,同时生成大量空列。
  2. 未将外层的ab_id加入meta,所以该列不会被自动带入结果DataFrame,更无法排在开头。

正确解决方案

1. 修正json_normalize参数

首先调整参数,只将外层的ab_id作为元数据传入,activity内的字段会自动展开,无需额外配置:

import pandas as pd

df = pd.json_normalize(data=response['val'], record_path=['activity'], meta=['ab_id'], errors='ignore')

这样既不需要record_prefix,也不会生成空列,同时ab_id会被正确关联到每个activity条目。

2. 将ab_id移至DataFrame开头

默认情况下meta字段会排在结果列的末尾,用以下任一方法调整顺序:

  • 方法一:重新构造列列表
cols = ['ab_id'] + [col for col in df.columns if col != 'ab_id']
df = df[cols]
  • 方法二:使用insert和pop快速调整
df.insert(0, 'ab_id', df.pop('ab_id'))

最终结果示例

执行后你会得到如下结构的DataFrame:

ab_idmsniiaicaiada
ab_123acpfile_source_connTrueFalseFalse
ab_123adefile_source_connTrueFalseFalse
ab_421adbfile_source_connTrueTrueFalse
ab_421aile_source_connTrueFalseFalse

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:36:09