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
相关产品推荐
相关产品推荐

