Dataframe PySpark中的列重新排列

Dataframe PySpark中的列重新排列,dataframe,pyspark,pyspark-dataframes,Dataframe,Pyspark,Pyspark Dataframes,我有一个包含很多列的数据框架。现在我想调整列的顺序。 许多列必须排在第一位(按特定顺序),后面的其余列按列名排序(不是手动排序,因为有很多列) 如何使用PySpark实现这一点 我想先对它们进行排序,然后再按特定顺序调整一些 df.orderBy(cols, ascending=True) 假设当前列顺序为: col_a, col_k, col_c, col_h, col_e, col_f, col_g, col_d, col_j, col_i, col_b 所需新订单: col_c, co

我有一个包含很多列的数据框架。现在我想调整列的顺序。
许多列必须排在第一位(按特定顺序),后面的其余列按列名排序(不是手动排序,因为有很多列)

如何使用PySpark实现这一点

我想先对它们进行排序,然后再按特定顺序调整一些

df.orderBy(cols, ascending=True)
假设当前列顺序为:

col_a, col_k, col_c, col_h, col_e, col_f, col_g, col_d, col_j, col_i, col_b
所需新订单:

col_c, col_j, col_a, col_g :: col_b, col_d, col_e, col_f, col_h, col_i, col_k

之前::
是按特定顺序排列的列,在剩余的列按列名排序之后

您可以选择第一个特定列,使用python对其余列进行排序
排序
,然后在df中选择:

first_cols = ["col_c", "col_j", "col_a", "col_g"]
other_cols = sorted([c for c in df.columns if c not in first_cols], key=str.lower())

rearanged_cols = first_cols + other_cols
然后:

或:


您可以选择第一个特定列,使用python对其余列进行排序
sorted
,然后在df中选择:

first_cols = ["col_c", "col_j", "col_a", "col_g"]
other_cols = sorted([c for c in df.columns if c not in first_cols], key=str.lower())

rearanged_cols = first_cols + other_cols
然后:

或:

df = df.select(*rearanged_cols)