📌  相关文章
📜  如何重命名 PySpark 数据框中的多列?(1)

📅  最后修改于: 2023-12-03 14:53:20.681000             🧑  作者: Mango

如何重命名 PySpark 数据框中的多列?

调整数据框列名是数据准备过程中基本的操作。在 PySpark 中也提供了一种简洁、高效的方法来重命名数据框中的多列。下面介绍两种实现方式。

方法一:使用 withColumnRenamed 功能

使用 withColumnRenamed 功能可以方便快捷地重命名单列或多列。对于多列的数据框,需要使用该方法反复调用来完成多列的重命名。

# 导入 PySpark 模块中的函数
from pyspark.sql.functions import *

# 创建测试数据
data = [("Alice", 1, 10), ("Bob", 2, 20), ("Cathy", 3, 30)]
columns = ["name", "id", "age"]
df = spark.createDataFrame(data, columns)

# 批量重命名多列
new_columns = {"name": "姓名", "id": "编号", "age": "年龄"}
for old_col, new_col in new_columns.items():
    df = df.withColumnRenamed(old_col, new_col)

# 显示重命名后的数据框
df.show()

执行上述代码,得到数据框 df 的列名从 name, id, age 转变为 姓名, 编号, 年龄

方法二:使用 selectExpr 功能

使用 selectExpr 功能可以使用 SQL-like 的语法来完成列名的重命名。需要使用 as 关键字来指定新列名。

# 导入 PySpark 模块中的函数
from pyspark.sql.functions import *

# 创建测试数据
data = [("Alice", 1, 10), ("Bob", 2, 20), ("Cathy", 3, 30)]
columns = ["name", "id", "age"]
df = spark.createDataFrame(data, columns)

# 批量重命名多列
new_columns = {"name": "姓名", "id": "编号", "age": "年龄"}
exprs = [col(old_col).alias(new_col) for old_col, new_col in new_columns.items()]
df = df.selectExpr(exprs)

# 显示重命名后的数据框
df.show()

执行上述代码,得到数据框 df 的列名从 name, id, age 转变为 姓名, 编号, 年龄

以上两种方法各有优点,使用 withColumnRenamed 更加直观清晰,使用 selectExpr 更具可读性和可维护性。在实际项目中可灵活选择操作方式。