我有一个字典my_dict_of_df
,每次运行程序时,字典都由可变个数据帧组成。我想创建一个新的数据框,将所有这些数据框合并。
我的数据框看起来像-
my_dict_of_df["df_1"], my_dict_of_df["df_2"] and so on...
如何合并所有这些数据框?
答案 0 :(得分:0)
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
,因为不推荐使用后者。