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

如何高效合并Pandas中两个Series列的对应元素生成新列?

高效拼接Pandas中两个含列表元素的Series

嘿,针对你需要高效拼接两个Series列的需求,我给你推荐一个既简单又快速的方法,特别适合处理大规模数据集!

首先明确你的场景:两个Series的每个元素都是列表,需要把对应位置的列表元素逐个拼接(比如['332', '331']和['C/A/2/3', 'C/A/2/3']变成['332C/A/2/3', '331C/A/2/3'])。

最推荐的高效方法:列表推导式 + zip

Pandas的apply方法虽然直观,但在处理大数据集时会有不少性能开销,而列表推导式是Python原生的高效操作,速度会快很多。

先看示例代码:

import pandas as pd

# 构造示例数据
s1 = pd.Series([['332', '331'], ['123', '456'], ['789', '012']])
s2 = pd.Series([['C/A/2/3', 'C/A/2/3'], ['D/B/1/2', 'D/B/1/2'], ['E/C/3/4', 'E/C/3/4']])

# 高效拼接生成新列
df = pd.DataFrame({'col1': s1, 'col2': s2})
df['combined'] = [
    [a + b for a, b in zip(lst1, lst2)]
    for lst1, lst2 in zip(df['col1'], df['col2'])
]

运行后df['combined']的结果就是你想要的:

0    [332C/A/2/3, 331C/A/2/3]
1    [123D/B/1/2, 456D/B/1/2]
2    [789E/C/3/4, 012E/C/3/4]
Name: combined, dtype: object

为什么这个方法高效?

  • 列表推导式是Python底层实现的循环,比Pandas的apply少了很多中间层的开销;
  • zip函数也是原生高效的配对工具,能快速把两个Series的元素、以及每个列表内的元素一一对应起来。

如果你的数据集非常大(比如百万级别的行),这个方法的速度优势会非常明显——你可以用%timeit分别测试列表推导式和apply版本的代码,就能直观看到差距。

备选:Pandas原生API方法

如果你更习惯Pandas的API风格,也可以用combine方法,但速度会慢一些:

df['combined'] = df['col1'].combine(df['col2'], lambda x, y: [a + b for a, b in zip(x, y)])

但还是强烈推荐列表推导式的版本,尤其是处理大规模数据的时候。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:37:45