[英]Rename nested struct columns to all in lower case in a Spark DataFrame using PySpark
[英]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.