如何在不重命名列的情况下用一行代码计算DataFrame列的平均值、最大值、最小值(PySpark场景)
解决PySpark中一行代码计算列的均值、最大/最小值(不重命名列)
嘿,我来帮你排查问题并搞定这个需求!
首先看你给出的代码,大概率报错的原因是列名拼写错误——你写的Salaray应该是Salary吧?这是很容易犯的小疏忽。不过就算修正了拼写,我们也可以用最简洁的方式实现你的需求:在不手动重命名列的前提下,一行代码算出目标列的平均值、最大值和最小值。
正确的一行代码实现
首先确保你已经导入了PySpark需要的聚合函数:
from pyspark.sql.functions import avg, min, max, col
然后直接执行这行代码即可:
df5 = df5.agg(avg(col("Salary")), min(col("Salary")), max(col("Salary")))
如果你觉得col()有点多余,还可以更简化,直接传入列名字符串:
df5 = df5.agg(avg("Salary"), min("Salary"), max("Salary"))
为什么这样符合需求?
执行完之后,结果DataFrame的列名会自动生成为avg(Salary)、min(Salary)、max(Salary),完全不需要你手动重命名列,完美匹配你的要求。
如果修正拼写后还是报错,那你可以检查下:
- 目标列
Salary是否真的存在于df5中 - 是否正确导入了
avg、min、max这些聚合函数
内容的提问来源于stack exchange,提问作者Venkatesh
相关产品推荐
相关产品推荐

