簡體   English   中英

如何使用列表重命名 pyspark dataframe 的所有列

[英]how to rename all columns of pyspark dataframe using a list

我有一個現有的 pyspark dataframe,它有大約 200 列。 我有一個列名列表(以正確的順序和長度)。

如何在不使用 structtype 的情況下將列表應用於 dataframe?

假設列名列表的順序正確並且長度匹配,您可以使用toDF

准備一個例子 dataframe

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()

Output

+---+---+---+---+
|  A|  B|  C|  D|
+---+---+---+---+
|  6|  9|  4|  7|
|  6|  4|  7|  9|
|  2|  5|  2|  2|
|  3|  7|  4|  5|
|  8|  9|  6|  8|
+---+---+---+---+

更改列名

newcolumns = ['new_A','new_B','new_C','new_D']
df.toDF(*newcolumns).show()

Output

+-----+-----+-----+-----+
|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|
+-----+-----+-----+-----+

如果您有預先存在的列列表,它會工作正常:

df_list = ["newName_1", "newName_2", "newName_3", "newName_4"]
renamed_df = df.toDF(*df_list)
renamed_df.show()

但是如果你想讓它動態化而不依賴於列列表,這里有另一種方法:

df.select([col(col_name).alias(col_name) for col_name in df])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM