Конкатенация столбцов pyspark в DataFrame для pyspark - PullRequest
0 голосов
/ 29 июня 2018

Я работаю с python, и в настоящее время у меня есть пара экземпляров класса pyspark.sql.column.Column, и я хотел бы объединить их так, чтобы я получил объект pyspark.sql.dataframe.DataFrame с упомянутыми столбцами. Позвольте мне проиллюстрировать это на следующем примере с игрушкой.

Пример игрушек

1) Давайте сначала создадим пример фрейма данных pyspark, чтобы иметь возможность получить два примера столбцов.

from pyspark.sql import SQLContext
# Create a DataFrame
df = sqlContext.createDataFrame([("Jordi", 14, 45), ("Elisabeth", 22, 63), ("Aina", 8, 35)], ("name", "age", "weight"))
# Get two columns
col1 = df.name
col2 = df.age

2) Теперь моя цель - объединить переменные col1 и col2 в один DataFrame, чтобы этот новый DataFrame содержал два столбца:

|   name    |   age  |
|-----------+--------|
| Jordi     |   14   |
| Elisabeth |   22   |
| Aina      |   8    |

1 Ответ

0 голосов
/ 29 июня 2018

Я не уверен, чтобы создать фрейм данных из столбцов спарк, которые используются для выражений. Вы можете использовать оператор select для этого:

df.select('name', 'age')

Если у вас есть 2 кадра данных и нет возможности объединить их с помощью общего столбца:

from pyspark.sql import Row

df_temp1 = df1 \
             .select(col1) \
             .rdd \
             .zipWithIndex() # (row, id) \
             .map(lambda row: Row(id=row[1], **row[0].asDict())) \
             .toDf()

df_temp2 = df2 \
             .select(col2) \
             .rdd \
             .zipWithIndex() # (row, id) \
             .map(lambda row: Row(id=row[1], **row[0].asDict())) \
             .toDf()
 df = df2_temp.join(df1_temp, 'id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...