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

Pandas如何将DataFrame中一列的列表元素合并到另一列列表

Pandas 逐行合并两列存储的列表元素方案

问题复现

待处理的DataFrame结构如下,column_A和column_B均存储由字典组成的列表:

import pandas as pd
df = pd.DataFrame(
    {
        'column_A': [
            [{'zone':'A', 'number':'7'}, {'zone':'B', 'number': '8'}], 
            [{'zone':'A', 'number':'6'}, {'zone':'E', 'number':'7'}]
        ],
        'column_B': [
            [{'zone':'C', 'number':'4'}], 
            [{'zone':'D', 'number': '9'}]
        ]
    }
)

目标是逐行将column_B的列表元素追加到对应行的column_A列表末尾,第一行的预期输出为:

[{'zone':'A', 'number':'7'}, {'zone':'B', 'number': '8'}, {'zone':'C', 'number':'4'}]

直接对整列使用+运算符、调用列表insert方法报错,是因为Pandas默认将列作为Series对象处理,整列运算会走Series的对齐逻辑,不会自动识别元素为列表做逐元素拼接。

可行实现方法

  • 方法1:apply逐行拼接(写法简单,适合小数据集)
    按行遍历取出两个列表,直接用Python原生列表+做拼接后赋值回column_A即可:
    df['column_A'] = df.apply(lambda x: x['column_A'] + x['column_B'], axis=1)
    
  • 方法2:列表推导式(性能更高,适合大数据集)
    直接用zip同步遍历两列的元素做拼接,避免apply的额外开销,运行速度更快:
    df['column_A'] = [list_a + list_b for list_a, list_b in zip(df['column_A'], df['column_B'])]
    

避坑提示

  • 不要直接写df['column_A'] + df['column_B'],该写法会触发Series级别的运算,尝试按索引对齐两列的值,无法实现列表逐行拼接,会抛出类型错误。
  • 如果需要保留原始列数据,可将合并结果赋值给新列,例如df['merged_list']即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:45:43