我有一个数据框,我按日期和名称分组,然后聚合平均价格。
df.filter("some filter")
.withColumn("price_int", df.print.cast('integer'))
.groupBy("Date", 'name')
.agg(avg(col('price_int')))
我想得到price_int列的max和stddev。
df.filter("some filter")
.withColumn("price_int", df.print.cast('integer'))
.groupBy("Date", 'name')
.agg(avg(col('price_int'),
max(col('price_int'),
stddev(col('price_int'),
)))
但是当我添加max(col('price_int)
时,我得到错误消息Column is not iterable
。当我添加stddev(col('price_int)
时,我得到错误消息'stdev is not defined'
您能告诉我如何获得列“price_int”的“max”和“standard dev”吗?
1条答案
按热度按时间qgzx9mmu1#
我怀疑问题出在哪里,因为你提供的代码似乎有语法混乱,但在任何情况下-以下将工作:
对我有效:
此外,请注意Spark有2个不同的标准差函数:
stddev()或stddev_samp()-返回组中表达式的无偏样本标准差
stddev_pop()-返回组中表达式的总体标准差。