如何使用列表重命名 pyspark 数据框的所有列

LLL*_*LLL 3 python pyspark

我有一个现有的 pyspark 数据框,约有 200 列。我有一个列名称列表(按正确的顺序和长度)。

如何在不使用 structtype 的情况下将列表应用于数据框?

Mic*_*sny 6

假设列名列表的顺序正确并且具有匹配的长度,您可以使用toDF

准备示例数据框

import numpy as np
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame(np.random.randint(1,10,(5,4)).tolist(), list('ABCD'))
df.show()
Run Code Online (Sandbox Code Playgroud)

输出

+---+---+---+---+
|  A|  B|  C|  D|
+---+---+---+---+
|  6|  9|  4|  7|
|  6|  4|  7|  9|
|  2|  5|  2|  2|
|  3|  7|  4|  5|
|  8|  9|  6|  8|
+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)

更改列名称

newcolumns = ['new_A','new_B','new_C','new_D']
df.toDF(*newcolumns).show()
Run Code Online (Sandbox Code Playgroud)

输出

+-----+-----+-----+-----+
|new_A|new_B|new_C|new_D|
+-----+-----+-----+-----+
|    6|    9|    4|    7|
|    6|    4|    7|    9|
|    2|    5|    2|    2|
|    3|    7|    4|    5|
|    8|    9|    6|    8|
+-----+-----+-----+-----+
Run Code Online (Sandbox Code Playgroud)