测向
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
4条答案
按热度按时间koaltpgm1#
--
ftf50wuq2#
你应该执行多个
max
,agg
上Col1
以及Col2
```from pyspark.sql import functions as F
df_new.groupBy(F.year("Date")).agg(F.max("Col1"),F.max("Col2"))
.show()
kq4fsx7k3#
如果您有一个巨大的数据集,最好在下面这样的情况下使用窗口函数,这比groupby执行得更好
---------输出
pkwftd7m4#
检查以下代码。