📅  最后修改于: 2023-12-03 14:53:20.681000             🧑  作者: Mango
调整数据框列名是数据准备过程中基本的操作。在 PySpark 中也提供了一种简洁、高效的方法来重命名数据框中的多列。下面介绍两种实现方式。
使用 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 功能可以使用 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 更具可读性和可维护性。在实际项目中可灵活选择操作方式。