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

Pandas通用合并同名列方法:重复值以空格分隔拼接

嵌套地址字段同名列合并通用方案

问题背景

从API拿到的三层嵌套地址字段原始数据如下,转成表结构时会出现同名字段多列的问题,比如示例中city字段重复出现2次,对应两个不同的值:

raw_list = [[[['3200', 'house_number'],['northline ave', 'road'],['ste 360', 'unit'],['greensboro', 'city'],['27408', 'postcode'],['7611', 'city'],['nc', 'state'],['us', 'country']]]]

需要实现无前置字段配置的通用处理逻辑:无论哪个字段重复、重复多少次,都将同名字段对应的多个值以空格为分隔符拼接,最终每个字段保留唯一一列。

实现思路

  • 先递归打平任意层级的嵌套列表,提取所有[字段值, 字段名]格式的二元组,适配API返回可能存在的多层嵌套结构
  • 用字典做字段聚合,以字段名为键,遍历所有二元组时把同名字段的值追加到对应键的列表中
  • 遍历聚合字典,把每个字段对应的多个值用空格拼接为单个字符串,最终输出的字典可直接转换为表结构,不存在重复列

代码实现(Python)

from collections import defaultdict

def extract_field_pairs(nested_data):
    """递归打平嵌套列表,提取所有[值, 字段名]二元组"""
    pairs = []
    for item in nested_data:
        if isinstance(item, list):
            # 匹配值-字段名的基础结构
            if len(item) == 2 and isinstance(item[1], str):
                pairs.append(item)
            else:
                pairs.extend(extract_field_pairs(item))
    return pairs

def merge_duplicate_fields(raw_data):
    """合并同名字段,值用空格拼接"""
    field_collector = defaultdict(list)
    for value, field_name in extract_field_pairs(raw_data):
        field_collector[field_name].append(value)
    # 拼接同名字段值
    return {field: " ".join(value_list) for field, value_list in field_collector.items()}

# 测试示例数据
if __name__ == "__main__":
    raw_list = [[[['3200', 'house_number'],['northline ave', 'road'],['ste 360', 'unit'],['greensboro', 'city'],['27408', 'postcode'],['7611', 'city'],['nc', 'state'],['us', 'country']]]]
    result = merge_duplicate_fields(raw_list)
    print(result)

运行结果

{
    'house_number': '3200',
    'road': 'northline ave',
    'unit': 'ste 360',
    'city': 'greensboro 7611',
    'postcode': '27408',
    'state': 'nc',
    'country': 'us'
}

该逻辑不需要提前指定任何字段名,对嵌套层级、字段重复次数没有限制,输出结果可以直接传入pandas等库转成结构化表,不会出现同名列冲突。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 21:33:28