Как переименовать несколько имен столбцов в один столбец? - PullRequest
0 голосов
/ 09 октября 2019

У меня есть таблица, в которой есть столбцы [col1, col2, col3 .... col9]. Я хочу объединить все данные столбцов в один столбец как столбец в Python?

Ответы [ 3 ]

2 голосов
/ 09 октября 2019
from pyspark.sql.functions import concat

values = [('A','B','C','D'),('E','F','G','H'),('I','J','K','L')]
df = sqlContext.createDataFrame(values,['col1','col2','col3','col4'])
df.show()

+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
|   A|   B|   C|   D|
|   E|   F|   G|   H|
|   I|   J|   K|   L|
+----+----+----+----+

req_column = ['col1','col2','col3','col4']
df = df.withColumn('concatenated_cols',concat(*req_column))
df.show()

+----+----+----+----+-----------------+
|col1|col2|col3|col4|concatenated_cols|
+----+----+----+----+-----------------+
|   A|   B|   C|   D|             ABCD|
|   E|   F|   G|   H|             EFGH|
|   I|   J|   K|   L|             IJKL|
+----+----+----+----+-----------------+
1 голос
/ 09 октября 2019

с использованием Spark SQL

new_df=sqlContext.sql("SELECT CONCAT(col1,col2,col3,col3) FROM df")

Используя не Spark SQL, вы можете использовать функцию Concat

new_df = df.withColumn('joined_column', concat(col('col1'),col('col2'),col('col3'),col('col4'))
0 голосов
/ 09 октября 2019

В Spark (pySpark) по причинам, нет редактирования существующих данных. Что вы можете сделать, это создать новый столбец. Проверьте следующую ссылку.

Как добавить новый столбец в фрейм данных Spark (с использованием PySpark)?

Использование функции UDF Вы можете агрегировать / объединять все эти значения в строке и возвращать вас как одно значение.

Несколько предостережений, обратите внимание на следующие проблемы с данными при агрегировании

  1. Нулевые значения
  2. Несоответствия типов
  3. Проблемы кодировки строк
...