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

如何在PySpark DataFrame中复制列并重命名?

在PySpark中复制并重命名DataFrame列

没问题!要实现复制Rate列并重命名为Rate2的需求,PySpark有两种非常实用的方法,我结合你的示例来演示:

方法1:使用withColumn()

withColumn()是PySpark中添加新列的常用方法,我们直接引用原列的值,给新列指定名称即可:

首先先创建你的原始DataFrame(方便你测试):

from pyspark.sql import SparkSession

# 初始化SparkSession
spark = SparkSession.builder.appName("CopyColumnExample").getOrCreate()

# 创建原始数据
data = [("Aira", 23, 90), ("Ben", 32, 98), ("Cat", 27, 95)]
columns = ["Name", "Age", "Rate"]
df = spark.createDataFrame(data, schema=columns)

然后执行复制列的操作:

# 复制Rate列并重命名为Rate2
df_new = df.withColumn("Rate2", df["Rate"])

# 展示结果
df_new.show()

执行后就能得到你想要的输出:

+----+---+----+-----+
|Name|Age|Rate|Rate2|
+----+---+----+-----+
|Aira| 23|  90|   90|
| Ben| 32|  98|   98|
| Cat| 27|  95|   95|
+----+---+----+-----+

方法2:使用select() + alias()

如果你想同时控制要保留的列,也可以用select()方法,给原列起别名来创建新列:

# 选择原有所有列,同时复制Rate列为Rate2
df_new = df.select("*", df["Rate"].alias("Rate2"))

df_new.show()

这个方法和上面的效果完全一样,适合你需要调整列选择的场景。

另外,如果你习惯用col()函数来引用列,也可以这样写(需要先导入col):

from pyspark.sql.functions import col

df_new = df.withColumn("Rate2", col("Rate"))
# 或者
df_new = df.select("*", col("Rate").alias("Rate2"))

这样就轻松实现了你的需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:14:51