[英]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_df
, sample_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.