如何在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
相关产品推荐
相关产品推荐

