PySpark中groupBy()结合colRegex分组聚合失败求助
解决PySpark中按前缀列分组并聚合的问题
你的代码存在两个关键问题:
- 不必要地遍历所有列并使用生成器,
groupBy不需要这种冗余写法 - 错误地用
sf.col()包裹colRegex,实际上groupBy可以直接接收正则表达式字符串来匹配列名
正确实现代码
# 直接匹配所有前缀为B_的列作为分组键,对Prio列取最大值 df_calc_new = df_calc_new.groupBy(colRegex("`B_.*`")).agg(max(col("Prio")).alias("max_prio"))
补充说明
colRegex("B_.*")会自动匹配所有列名以B_开头的列,无需手动遍历列列表- 若要确认匹配的列,可先执行
df_calc_new.select(colRegex("B_.*")).columns查看选中的分组列,确保符合预期 alias("max_prio")为可选操作,用来给聚合后的列起清晰名称,方便后续使用
内容的提问来源于stack exchange,提问作者David Meier
相关产品推荐
相关产品推荐

