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

如何在pandas DataFrame中并行遍历两组列批量生成计算列

实现方案

pandas优先使用列级向量化操作实现这类需求,性能远高于逐行遍历,以下是两种常用实现方式:

方法1:同序号列对应计算(通用场景)

如果你的计算规则是Cn = An + Bn(你描述里的C1=A1+B2大概率是笔误,非通用规则可以看方法2),可以直接按序号对齐两组列批量计算:

import pandas as pd
import numpy as np

# 你的示例数据
df = pd.DataFrame(np.random.randn(3, 6),
           columns=['A1', 'A2', 'A3','B1', 'B2','B3'])

# 按序号排序提取A、B两组列
a_cols = sorted([c for c in df.columns if c.startswith('A')], key=lambda x: int(x[1:]))
b_cols = sorted([c for c in df.columns if c.startswith('B')], key=lambda x: int(x[1:]))

# 方式1:小表直接遍历列名计算
for a_c, b_c in zip(a_cols, b_cols):
    df[f'C{a_c[1:]}'] = df[a_c] + df[b_c]

# 方式2:10万行以上大表推荐用纯numpy向量化,效率更高
# df[[f'C{i+1}' for i in range(len(a_cols))]] = df[a_cols].values + df[b_cols].values

方法2:自定义列映射规则

如果确实需要按你写的特殊规则(C1=A1+B2、C2=A2+B2)计算,先定义列的对应关系再批量处理即可:

# 自定义A列对应B列的映射规则
col_match = {
    'A1': 'B2',
    'A2': 'B2',
    'A3': 'B3'
}

for a_c, b_c in col_match.items():
    df[f'C{a_c[1:]}'] = df[a_c] + df[b_c]

注意:尽量不要使用iterrows/apply按行遍历的方式实现,10万行以上的数据集性能会比列向量化操作慢100倍以上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:57:03