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

基于Key合并Spark DataFrame行的PySpark实现方案求助

PySpark 合并Pivot后同ID多行数据

针对你Pivot后出现同ID多行,需要合并为一行并保留各列有效数值的需求,可以通过分组聚合+动态列处理实现,无需提前知晓T列的数量:

实现步骤

  1. 提取所有动态生成的T列(排除ID列)
  2. 按ID分组,对每个T列取最大值(因为有效数值均大于0或极小值0E-10,max会自动保留有效数据)

代码示例

from pyspark.sql import functions as F

# 假设你的DataFrame名为df
# 获取所有非ID的列(即动态生成的T1、T2...Tn)
t_columns = [col for col in df.columns if col != "ID"]

# 分组聚合,每个T列取最大值
result_df = df.groupBy("ID").agg(*[F.max(col).alias(col) for col in t_columns])

# 查看结果
result_df.show()

原理说明

因为同ID下每个T列仅存在一个有效非零值,其余为0或极小值,max()函数会自动筛选出有效数值,完美匹配你期望的合并结果。此方法支持任意数量的动态T列,无需修改代码适配列数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:25:28