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

pandas如何将DataFrame多行存储的列表合并为一个大列表

pandas合并DataFrame行内列表为单个大列表

问题场景

当pandas DataFrame的某一列存储的是列表类型数据时,需要将所有行的列表元素拼接成一个扁平的一维大列表。
示例输入DataFrame结构:

fruits
0    [apple, banana, orange]
1    [berry, lemon]
2    [apple, tomato]
3    [lime, orange, banana]

预期输出结果:

['apple', 'banana', 'orange', 'berry', 'lemon', 'apple', 'tomato', 'lime', 'orange', 'banana']

可用实现方案

以下方案均能得到预期结果,可根据数据量和使用习惯选择:

  • 快速写法(百行级数据首选,代码最短)
    直接调用列的sum方法,传入空列表作为初始值,会逐行拼接所有列表:

    merged_list = df['fruits'].sum([])
    

    提示:数据量超过万行时不推荐这个方法,列表逐次拼接会产生较多临时对象,性能较差。

  • 通用高性能写法(全数据量适用,推荐优先用)
    用两层嵌套的列表推导式直接遍历提取元素,没有额外依赖,性能稳定:

    merged_list = [item for single_list in df['fruits'] for item in single_list]
    
  • 低内存写法(超大数据量适用)
    用Python标准库itertools的链式迭代工具,不会生成中间临时列表,内存占用更低:

    from itertools import chain
    merged_list = list(chain.from_iterable(df['fruits']))
    
  • pandas原生写法(可读性高)
    用pandas自带的explode方法先把列表拆分为单元素行,再直接转列表:

    merged_list = df['fruits'].explode().tolist()
    

扩展:如果需要对合并后的结果去重,不需要保留原有顺序可以直接用list(set(merged_list));如果需要保留元素首次出现的顺序,可以用list(dict.fromkeys(merged_list))实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:51:19