Объединить несколько фреймов данных в PySpark - PullRequest
0 голосов
/ 12 июня 2019

У меня есть следующие несколько фреймов данных, которые имеют два столбца в каждом и имеют одинаковое количество строк. Как мне соединить их, чтобы получить один фрейм данных, в котором есть два столбца и все строки из обоих фреймов данных?

Например:

DataFrame-1

+--------------+-------------+
| colS         |  label      |
+--------------+-------------+
| sample_0_URI |  0          |
| sample_0_URI |  0          |
+--------------+-------------+

DataFrame-2

+--------------+-------------+
| colS         |  label      |
+--------------+-------------+
| sample_1_URI |  1          |
| sample_1_URI |  1          |
+--------------+-------------+

DataFrame-3

+--------------+-------------+
| col1         |  label      |
+--------------+-------------+
| sample_2_URI |  2          |
| sample_2_URI |  2          |
+--------------+-------------+

DataFrame-4

+--------------+-------------+
| col1         |  label      |
+--------------+-------------+
| sample_3_URI |  3          |
| sample_3_URI |  3          |
+--------------+-------------+

...

Я хочу, чтобы результат объединения был:

+--------------+-------------+
| col1         |  label      |
+--------------+-------------+
| sample_0_URI |  0          |
| sample_0_URI |  0          |
| sample_1_URI |  1          |
| sample_1_URI |  1          |
| sample_2_URI |  2          |
| sample_2_URI |  2          |
| sample_3_URI |  3          |
| sample_3_URI |  3          |
+--------------+-------------+

Теперь, если я хочу выполнить однократное кодирование для столбца label , должно ли оно выглядеть примерно так:

oe = OneHotEncoder(inputCol="label",outputCol="one_hot_label")
df = oe.transform(df) # df is the joined dataframes <cols, label>

1 Ответ

0 голосов
/ 12 июня 2019

Вы ищете union.

В этом случае я бы поместил кадры данных в list и использовал reduce:

from functools import reduce

dataframes = [df_1, df_2, df_3, df_4]

result = reduce(lambda first, second: first.union(second), dataframes)
...