[英]Pyspark Dataframe - How to concatenate columns based on array of columns as input
我有 10 列的數據框,並且想要執行函數 - 基於作為輸入的列數組的連接:
arr = ["col1", "col2", "col3"]
這是目前的情況:
newDF = rawDF.select(concat(col("col1"), col("col2"), col("col3") )).exceptAll(updateDF.select( concat(col("col1"), col("col2"), col("col3") ) ) )
還:
df3 = df2.join(df1, concat( df2.col1, df2.col2, df2.col3, df2.col3 ) == df1.col5 )
但是我想根據輸入數組創建一個循環或函數來執行此操作(而不是像現在這樣對其進行硬編碼)。
什么是最好的方法?
您可以使用 (*) 解壓縮 cols。 在 pyspark.sql 文檔中,如果任何函數有 (*cols),則表示您可以解壓縮 cols。 對於連接:
pyspark.sql.functions.concat(*cols)
from pyspark.sql import functions as F
arr = ["col1", "col2", "col3"]
newDF = rawDF.select(F.concat(*(F.col(col) for col in arr))).exceptAll(updateDF.select(F.concat(*(F.col(col) for col in arr))))
對於聯接:
arr=['col1','col2','col3']
df3 = df2.join(df1, F.concat(*(F.col(col) for col in arr)) == df1.col5 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.