【问题标题】:Rearranging columns in PySpark在 PySpark 中重新排列列
【发布时间】:2021-02-06 06:40:46
【问题描述】:

我有一个包含很多列的 DataFrame。现在我想调整列的顺序。
一定数量的列必须排在前面(按一定的顺序),其余的列按列名排序(不是手动的,因为有很多)

如何使用 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

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

【问题讨论】:

    标签: dataframe pyspark pyspark-dataframes


    【解决方案1】:

    您可以选择第一个特定的列,使用 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.toDF(*rearanged_cols)
    

    或者:

    df = df.select(*rearanged_cols)
    

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 2017-08-12
      • 1970-01-01
      • 2011-09-26
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多