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

Pandas DataFrame中按条件拼接两列的最优/最简洁实现方案

Pandas按条件拼接列的最优实现方案

你当前使用iterrows逐行遍历的方式性能较差,针对你的需求可以直接用矢量化运算实现单行代码完成,和R语言中dplyr/data.table的使用体验一致,性能远高于逐行遍历。

方案1:基于numpy.where实现(最常用)

import pandas as pd
import numpy as np

data = {"Product": ["Shorts", "T-Shirt", "Jacket", "Cap"],
        "Color": ["Red", "Blue", "White", "Green"],
        "Size": ["S", "M", None, "S"]}
df = pd.DataFrame(data)

# 核心单行代码实现需求
df['Output'] = np.where(df['Size'] == 'S', df['Product'] + ' (' + df['Color'] + ')', df['Color'])

print(df)

方案2:Pandas原生实现(无需引入numpy)

如果不想额外依赖numpy,可使用pandas自带的mask方法实现:

df['Output'] = df['Color'].mask(df['Size'] == 'S', df['Product'] + ' (' + df['Color'] + ')')

补充说明

  • 两种方案均为C层面执行的矢量化运算,数据量过万时性能比iterrows高百倍以上
  • 逻辑完全匹配需求:Size取值为'S'时拼接Product和Color,其余情况(包括Size为None、其他取值)直接返回Color列值
  • 如果数据中Product或Color存在非字符串类型,可在对应列后加.astype(str)做类型转换,避免拼接报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:03