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

使用pandas json_normalize提取嵌套JSON元数据遇问题求助

解决pandas json_normalize多层嵌套数组提取元数据的问题

你的JSON数据结构:

data=[
    {'a':'aa',
    'b':{'b1':'bb1','b2':'bb2'},
    'c':[{
        'ca':[{'ca1':'caa1'
            }]
        }]
    }]  

预期输出表格:

ca1ab.b1
caa1aabb1

你尝试的代码:

pd.json_normalize(data, record_path=['c','ca'], meta = ['a',['b','b1']])

但无法识别b1键,仅设置record_path='c'时能正常找到该键。


方法1:使用点分隔字符串指定嵌套元数据字段

如果你的pandas版本对数组形式的嵌套meta路径解析有问题,改用点分隔的字符串指定b.b1即可解决:

import pandas as pd

df = pd.json_normalize(
    data,
    record_path=['c', 'ca'],
    meta=['a', 'b.b1']
)
# 调整列顺序匹配预期结果
df = df[['ca1', 'a', 'b.b1']]
print(df)

输出结果:

ca1   a b.b1
0  caa1  aa  bb1

方法2:分两步展开嵌套数组

如果方法1仍不生效,分步展开嵌套数组会更稳妥:

import pandas as pd

# 第一步:展开外层c数组,提取a和b.b1
df_c = pd.json_normalize(data, record_path='c', meta=['a', ['b', 'b1']])
# 第二步:展开内层ca数组,保留已提取的元数据
final_df = pd.json_normalize(
    df_c.to_dict('records'),
    record_path='ca',
    meta=['a', 'b.b1']
)
# 调整列顺序
final_df = final_df[['ca1', 'a', 'b.b1']]
print(final_df)

问题原因

当record_path指定多层嵌套数组(如['c','ca'])时,部分旧版本pandas对meta参数中数组形式的嵌套路径(['b','b1'])解析存在兼容性问题,无法正确关联原始数据中的嵌套字段。改用点分隔字符串路径或分步展开数组,可绕过该解析问题,确保元数据被正确提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:50:26