Конкатат нескольких столбцов данных с использованием pyspark - PullRequest
0 голосов
/ 28 февраля 2019

Предположим, у меня есть список столбцов, например:

col_list = ['col1','col2']
df = spark.read.json(path_to_file)
print(df.columns)
# ['col1','col2','col3']

Мне нужно создать новый столбец путем объединения col1 и col2.Я не хочу жестко кодировать имена столбцов при конкатенации, но нужно выбрать его из списка.

Как я могу это сделать?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы можете использовать от pyspark.sql.functions.concat() до concatenate столько столбцов, сколько указано в list.Продолжайте передавать их в качестве аргументов.

from pyspark.sql.functions import concat
# Creating an example DataFrame
values = [('A1',11,'A3','A4'),('B1',22,'B3','B4'),('C1',33,'C3','C4')]
df = sqlContext.createDataFrame(values,['col1','col2','col3','col4'])
df.show()
+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
|  A1|  11|  A3|  A4|
|  B1|  22|  B3|  B4|
|  C1|  33|  C3|  C4|
+----+----+----+----+

В функции concat() вы передаете все столбцы, которые нужно объединить, например concat('col1','col2').Если у вас есть список, вы можете un-list использовать его *.Так (*['col1','col2']) возвращает ('col1','col2')

col_list = ['col1','col2']
df = df.withColumn('concatenated_cols',concat(*col_list))
df.show()
+----+----+----+----+-----------------+
|col1|col2|col3|col4|concatenated_cols|
+----+----+----+----+-----------------+
|  A1|  11|  A3|  A4|             A111|
|  B1|  22|  B3|  B4|             B122|
|  C1|  33|  C3|  C4|             C133|
+----+----+----+----+-----------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...