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

Scala中动态拼接DataFrame指定列生成新列的实现方案

动态指定DataFrame列并拼接生成新列

问题描述

我有一个存储DataFrame列名的动态列表(元素数量不固定,示例:list_name=["name","email"]),还有一个包含多列的Pandas DataFrame(示例df包含name、email、phone列)。需要将列表中指定列的字段值拼接,生成一个新列,新列名为列表中列名的拼接结果(示例新列名:nameemail)。

示例输入

nameemailphone
ramram@gmail.com345897045
rajraj@gmail.com658086657

预期输出

nameemailphonenameemail
ramram@gmail.com345897045ramram@gmail.com
rajraj@gmail.com658086657rajraj@gmail.com

解决方案

直接通过Pandas的apply方法按行拼接指定列,同时动态生成新列名:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    "name": ["ram", "raj"],
    "email": ["ram@gmail.com", "raj@gmail.com"],
    "phone": [345897045, 658086657]
})

# 动态列名列表
list_name = ["name", "email"]

# 生成新列名
new_col_name = ''.join(list_name)

# 拼接指定列的值,确保转为字符串避免类型错误
df[new_col_name] = df[list_name].apply(lambda row: ''.join(row.astype(str)), axis=1)

print(df)

代码说明

  1. 动态生成新列名:用''.join(list_name)直接将列表中的列名拼接成新列的名称,适配任意长度的列名列表。
  2. 按行拼接列值:使用apply方法指定axis=1按行处理,row.astype(str)确保所有列值转为字符串类型(比如示例中的phone列是数值类型,转换后才不会报错),再用''.join()拼接每行的指定列内容。
  3. 灵活性:无论list_name包含2个还是更多列名,代码都能自动处理,比如list_name=["name", "phone"]会生成namephone列,值为name和phone的拼接结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:55:26