PySpark: объединение всех фреймов данных в словаре Python - PullRequest
0 голосов
/ 14 марта 2019

У меня есть словарь my_dict_of_df, который состоит из переменной числа фреймов данных при каждом запуске моей программы.Я хочу создать новый фрейм данных, объединяющий все эти фреймы данных.

Мои фреймы данных выглядят как-

my_dict_of_df["df_1"], my_dict_of_df["df_2"] and so on...

Как объединить все эти фреймы данных?

1 Ответ

0 голосов
/ 15 марта 2019

Консультируется с решением, данным здесь , благодаря @pault.

from functools import reduce
from pyspark.sql import DataFrame

def union_all(*dfs):
    return reduce(DataFrame.union, dfs)

df1 = sqlContext.createDataFrame([(1, "foo1"), (2, "bar1")], ("k", "v"))
df2 = sqlContext.createDataFrame([(3, "foo2"), (4, "bar2")], ("k", "v"))
df3 = sqlContext.createDataFrame([(5, "foo3"), (6, "bar3")], ("k", "v"))

my_dic = {}
my_dic["df1"] = df1
my_dic["df2"] = df2
my_dic["df3"] = df3

new_df = union_all(*my_dic.values())

print(type(new_df))   # <class 'pyspark.sql.dataframe.DataFrame'>
print(new_df.show())  

"""
+---+----+
|  k|   v|
+---+----+
|  1|foo1|
|  2|bar1|
|  3|foo2|
|  4|bar2|
|  5|foo3|
|  6|bar3|
+---+----+
"""

Редактировать : используя DataFrame.union вместо DataFrame.unionAll так как последний устарел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...