簡體   English   中英

Pyspark:根據其他數據框動態更新數據框的列位置

[英]Pyspark: Dynamically update columns position of a dataframe according to other dataframe

我需要經常更改列位置。 我沒有更改代碼,而是創建了一個臨時數據Index_df 在這里,我將更新列位置,它應該反映應執行更改的實際數據框。

樣本_df

F_cDc,F_NHY,F_XUI,F_NMY,P_cDc,P_NHY,P_XUI,P_NMY
415    258   854   245   478   278   874   235
405    197   234   456   567   188   108   267
315    458   054   375   898   978   677   134

索引_df

   col   position
    F_cDc,1 
    F_NHY,3
    F_XUI,5
    F_NMY,7
    P_cDc,2 
    P_NHY,4
    P_XUI,6
    P_NMY,8

這里根據index_dfsample_df應該改變。

預期輸出:

F_cDc,P_cDc,F_NHY,P_NHY,F_XUI,P_XUI,F_NMY,P_NMY
415    478   258   278   854   874   245   235
405    567   197   188   234   108   456   267
315    898   458   978   054   677   375   134

這里的列位置根據我在Index_df中更新的位置而改變

我可以做sample_df.select("<column order>")但我有 70 多列。 從技術上講,這不是最好的處理方式。

您可以使用select輕松實現。

首先,您以正確的順序檢索列:

NewColList = Index_df.orderBy("position").select("col").collect()

然后你將你的新訂單應用到你的 df

sample_df = sample_df.select(*[i[0] for i in NewColList])

暫無
暫無

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

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