python - PySpark:Python 字典中所有数据帧的联合
问题描述
每次我的程序运行时,我都有一个字典my_dict_of_df
,其中包含可变数量的数据帧。我想创建一个新的数据框,它是所有这些数据框的联合。
我的数据框看起来像 -
my_dict_of_df["df_1"], my_dict_of_df["df_2"] and so on...
如何合并所有这些数据框?
解决方案
感谢@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
因为后者已被弃用。
推荐阅读
- mysql - mysql 在尝试使用 case 选择两个不同的内容时返回混合排序规则
- pandas - 有趣的熊猫 groupby 困惑
- jakarta-ee - CDI 事件和 EJB 观察者的安全上下文
- python - 按每个主题的唯一值移动日期
- r - 多个动态选项卡创建中的条件面板
- python - 使用 databricks-connect 的 Azure 数据块连接
- python - matplotlib 中所有子图的相同 x-ticks
- amazon-web-services - 如何使用 Systems Manager `运行命令`
- reactjs - React.js,如何使用带有 setState 回调的 map 和 async 函数?
- python - 我不断收到无效的语法