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

PySpark如何按公共列分组合并DataFrame行

解决PySpark按Company合并行的问题

你之前的groupBy把所有字段都纳入分组条件了,这相当于按所有列的组合分组,自然没法合并同company的行。而且你不需要聚合计算,核心需求是把同company下各行的非空值整合到一行里。

直接用groupBy("company"),配合first/last函数并忽略空值就能实现:

from pyspark.sql import functions as F

# 按company分组,提取每个字段的第一个非空值
df_merged = df.groupBy("company").agg(
    F.first("date", ignorenulls=True).alias("date"),
    F.first("value", ignorenulls=True).alias("value"),
    F.first("category", ignorenulls=True).alias("category")
)

# 查看合并结果
df_merged.show()

代码说明

  • first(col, ignorenulls=True)会自动跳过空值,提取同company下对应字段的第一个非空值;如果你的数据里同company的字段有多条非空值,可根据实际需求换成last函数。
  • 从你的示例数据来看,每个company的每个字段仅存在一个非空值,这个方法完全匹配你的需求,运行后会得到你想要的合并结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:24:28