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

如何基于Pandas DataFrame前两列生成第三列?

高效生成拼接字符串列的解决方案

首先构建示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    'col-a': ['abc', 'def', 'ghi'],
    'col-b': [123, 456, 789]  # col-b为数值类型,后续需转字符串
})

最优方案:矢量化字符串拼接(速度最快)

针对大数据量场景,矢量化操作是首选,完全规避逐行循环,性能比apply()高数个数量级:

# 直接拼接字符串,将数值型col-b转为字符串后参与拼接
df['col-c'] = 'https://' + df['col-a'] + '.' + df['col-b'].astype(str)

备选方案:正确使用apply()

如果必须使用apply(),需指定axis=1实现逐行处理,同时传入两列值:

df['col-c'] = df.apply(lambda row: f"https://{row['col-a']}.{row['col-b']}", axis=1)

注:该方法仅适合小数据量场景,大数据量下性能远不如矢量化拼接。

基于NumPy的矢量化实现

也可通过NumPy字符串操作函数实现,性能同样优异:

import numpy as np

# 将列转为字符串数组
col_a_str = df['col-a'].values
col_b_str = df['col-b'].astype(str).values

# 分步拼接生成目标列
df['col-c'] = np.char.add(np.char.add('https://', col_a_str), np.char.add('.', col_b_str))

关键提示

  • 大数据量禁用apply():apply()本质是逐行遍历,数据量达十万级以上时速度会显著下降。
  • 数值列需转字符串:若col-b为数值类型,必须通过astype(str)转为字符串后才能参与拼接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:00:25