【问题标题】:Sort column names in specific order按特定顺序对列名进行排序
【发布时间】:2021-01-12 12:53:28
【问题描述】:

假设我有一个 pyspark 数据框的以下列名称:

自然地,pyspark 按 0、1、2 等对它们进行排序。但是,我想要以下内容:0_0; 0_1; 1_0; 1_1; 2_0; 2_1 或代替 0_0; 1_0; 2_0; 3_0; 4_0; (...); 0_1; 1_1; 2_1; 3_1; 4_1(两种解决方案我都可以)。

谁能帮我解决这个问题?

【问题讨论】:

    标签: dataframe sorting apache-spark pyspark


    【解决方案1】:

    可以根据下划线前后的数字对列名进行排序:

    df2 = df.select(
        'id',
        *sorted(
            df.columns[1:], key=lambda c: (int(c.split('_')[0]), int(c.split('_')[1]))
        )
    )
    

    要获得其他所需的输出,只需将上面代码中的01 交换即可。

    【讨论】:

    • 如何处理第一列(id)?因为它应该保持在开始
    猜你喜欢
    • 2017-04-08
    • 2019-11-04
    • 2016-11-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多