Pyspark Dataframe - Как объединить столбцы на основе массива столбцов в качестве входных данных - PullRequest
1 голос
/ 21 февраля 2020

У меня есть датафрейм из 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 ) 

Но я хочу сделать al oop или функцию для этого на основе входного массива (не так жестко, как сейчас).

Что лучше способ

1 Ответ

1 голос
/ 21 февраля 2020

Вы можете распаковать cols используя (*). В pyspark. sql документах, если какие-либо функции имеют (* cols), это означает, что вы можете распаковать cols. Для concat:

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 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...