You need to enable JavaScript to run this app. PySpark合并两个结构不同的DataFrame,用union仅返回首表如何解决
优惠活动
大模型
产品
解决方案
定价
更多

PySpark合并两个结构不同的DataFrame,用union仅返回首表如何解决

PySpark的union函数要求参与合并的两个DataFrame列数、列顺序完全一致,且是按位置匹配列而非按列名匹配。你当前使用的df1只有3列,df2有4列(多出Capacity字段),不符合union的调用要求,因此无法得到正确合并结果。

解决方法

  1. 先为列数更少的df1补充缺失的Capacity字段,值设为空,注意字段类型要和df2的Capacity类型保持一致:
from pyspark.sql.functions import lit

# 补充Capacity列,这里以df2的Capacity是int类型为例,可根据实际类型调整cast参数
df1_full = df_1.withColumn("Capacity", lit(None).cast("int"))
  1. 合并两个DataFrame,优先使用unionByName(按列名匹配,兼容列顺序不同的场景):
df_result = df1_full.unionByName(df_2)

如果使用的Spark版本低于2.3,不支持unionByName,可以手动对齐两表的列顺序后再调用union:

common_cols = ["Place", "Month", "People", "Capacity"]
df_result = df1_full.select(common_cols).union(df_2.select(common_cols))

执行后调用df_result.show()即可得到你需要的合并结果。

内容的提问来源于stack exchange,提问作者user175025

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 05:39:03