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

Pandas:按元素合并两个列表列的低耗时实现方法咨询

高效合并嵌套列的实现方法

针对你给出的DataFrame结构,想要将"A"和"B"列按位置合并成新的元组列表,最快的实现方式是使用列表推导式——它在处理这类嵌套迭代场景时,比apply等方法的开销小得多,尤其在数据量较大时优势明显。

示例代码

首先先还原你的数据:

import pandas as pd

df = pd.DataFrame({
    'A': [[(1,2),(3,4)], [(5,6),(7,8)]],
    'B': [[15,35], [55,75]]
})

然后用列表推导式生成目标列"C":

df['C'] = [
    [(*tuple_item, num) for tuple_item, num in zip(a_list, b_list)]
    for a_list, b_list in zip(df['A'], df['B'])
]

为什么这个方法高效?

  • 列表推导式的原生优势:它是Python中迭代处理数据的最优方式之一,避免了apply方法每行调用函数的额外开销,运行速度远超apply。
  • 元组直接拼接:用(*tuple_item, num)直接解构元组并追加数字,比先把元组转成列表再合并的操作更快(元组是不可变类型,解构拼接的底层操作更高效)。

验证结果

运行后df['C']的结果完全符合你的需求:

0    [(1, 2, 15), (3, 4, 35)]
1    [(5, 6, 55), (7, 8, 75)]
Name: C, dtype: object

如果你尝试用apply实现(如下),会发现它的运行效率明显低于列表推导式,尤其是当DataFrame行数较多时:

# 效率较低的apply实现,仅作对比
df['C'] = df.apply(lambda row: [(*t, n) for t, n in zip(row['A'], row['B'])], axis=1)

内容的提问来源于stack exchange,提问作者Jean-Eric

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:41:55