【发布时间】:2020-06-15 14:35:10
【问题描述】:
df
Date Col1 COl2
2010-01-01 23 28
2012-09-01 50 70
2010-03-04 80 10
2012-04-01 19 20
2012-03-05 67 9
df_new=df.withColumn('year',year(df['Date']))
Date Col1 COl2 year
2010-01-01 23 28 2010
2012-09-01 50 70 2012 and so on
现在,我正在尝试找出每年 Col1 和 Col2 的最大值。所以我使用 groupby:
df_new.groupby('year').max().show()
我得到的结果不是我所期望的。得到的结果
year max(year)
2010 2010
2012 2012 and so on
预期结果
year max(Col1) max(Col2)
2010 80 28
2012 67 70
【问题讨论】:
-
检查 Col1 和 Col2.. 的数据类型是什么?
-
您可以使用
.agg()聚合多个列的值。谷歌可以提供进一步的帮助stackoverflow.com/questions/36251004/… -
这能回答你的问题吗? Pyspark - Aggregation on multiple columns
-
@anky right, max(*cols)[source] 计算每个组的每个 numeric 列的最大值。 如果 OP 尝试过
df_new.groupby('year').max('Col1').show()他们会得到“Col1 不是数字列”或类似的东西。 -
@mazaneicha 谢谢,那么可能还有另一个问题说 max 无法正常工作:)
标签: python apache-spark pyspark pyspark-dataframes