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

如何在Python中为pd.json_normalize结果添加foo1.foo2.name字段?

为规范化后的DataFrame添加关联字段

原始数据结构

object_row = [{
    'name':'one',
    'foo2':{ 
        'id':'1.1',
        'id':'1.2'
    },
    'foo1':[
        {
            'foo2':{
                'id':'1.1',
                'name':'one.one'
            }
        }, 
        {
            'foo2':{
                'id':'1.2',
                'name':'one.two'
            }
        }
    ]
}]

原规范化代码及结果

原代码:

import pandas as pd

obj_row_normalize = pd.json_normalize(
    object_row,
    record_path=['foo2'],
    meta=['name'],
    record_prefix='num_'
)

得到的结果:

idnum_name
1.1one
1.2one

解决方案

核心思路是利用id作为关联键,先从foo1中提取id与name的对应关系,再和原规范化结果合并:

  1. 规范化foo1部分,提取所需的关联字段:
# 解析foo1数组,筛选出id和对应name
foo1_norm = pd.json_normalize(
    object_row,
    record_path=['foo1'],
    meta=['name']
)[['foo2.id', 'foo2.name']]

# 重命名列名,方便后续合并操作
foo1_norm = foo1_norm.rename(columns={
    'foo2.id': 'id',
    'foo2.name': 'name'
})
  1. 将两个DataFrame按id列进行左合并:
final_df = obj_row_normalize.merge(foo1_norm, on='id', how='left')

最终结果

idnum_namename
1.1oneone.one
1.2oneone.two

内容的提问来源于stack exchange,提问作者Diego Quirós

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:40:08