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

如何在Pandas DataFrame中无需循环跨行匹配取值生成新列?

单匹配列场景解决方案

你可以先提取A=0的行建立映射,直接对目标列做映射即可,全程无行遍历,性能远高于apply方案:

# 构建C列到对应B值的映射
base_map = df[df['A'] == 0].set_index('C')['B']
# 映射生成新列
df['new_B_based_on_A_and_C'] = df['C'].map(base_map)

多匹配列通用解决方案

多列匹配的场景下用左连接实现即可,适配任意数量的匹配列,同样是纯矢量化操作无遍历:

# 提取A=0的基准子表,重命名B列为目标新列名
base_df = df[df['A'] == 0][['C', 'D', 'B']].rename(columns={'B': 'new_B_based_on_A_C_D'})
# 按匹配列左连接回原表
df = df.merge(base_df, on=['C', 'D'], how='left')

如果需要新增更多匹配列,只需要修改on参数的列表即可,比如新增E列匹配就改为on=['C', 'D', 'E']。

以上两种方案都是pandas原生优化的操作,针对大型DataFrame的执行效率比逐行apply高1~2个数量级,且代码简洁易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:07