You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中基于单列横向合并多个DataFrame?

基于ID列批量合并多个DataFrame

需求:基于ID列合并以下3个DataFrame,得到指定格式的输出,需要一种简洁的实现方式,方便后续扩展合并更多数量的DataFrame。

输入数据

+---+---+---+
| ID|  a|  b|
+---+---+---+
|  A|  1|  1|
|  B|  2|  2|
+---+---+---+
+---+---+---+
| ID|  c|  d|
+---+---+---+
|  A|  3|333|
|  B|  4|444|
+---+---+---+
+---+---+---+
| ID|  e|  f|
+---+---+---+
|  A|555|  5|
|  B|666|  6|
+---+---+---+

期望输出

+---+---+---+---+---+---+---+
| ID|  a|  b|  c|  d|  e|  f|
+---+---+---+---+---+---+---+
|  A|  1|  1|  3|333|555|  5|
|  B|  2|  2|  4|444|666|  6|
+---+---+---+---+---+---+---+

解决方案

将待合并的DataFrame存入列表,借助reduce函数批量执行按ID列的合并操作,该方式可轻松扩展到合并更多DataFrame的场景:

# 导入模块(Python3中reduce需从functools导入)
from functools import reduce

# 创建DataFrame列表
list_df = [df1, df2, df3]

# 一次性合并所有DataFrame
# 移除后续DataFrame的ID列,避免合并后出现重复列
df_all = reduce(lambda x, y: x.join(y.drop('ID', axis=1), on="ID"), list_df)

注:如果首个DataFrame已将ID设置为索引,可直接使用reduce(lambda x, y: x.join(y, on="ID"), list_df),无需移除后续DataFrame的ID列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:31:11