如何在pyspark数据帧中显示特定的max行

2024-04-19 13:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码

ageDF.sort('Period')
     .groupBy('Period')
     .agg(round(sum('Age_specific_birth_rate'), 2).alias('Total Births'))
     .show()

以上各组按时期划分的年龄别出生率之和

所以输出会是

Period|Total Births|
+------+------------+
|  2000|       395.5|
|  2001|       393.4|
|  2002|       377.3|
|  2003|       386.2|
|  2004|       395.9|
|  2005|       391.9|
|  2006|       400.4|
|  2007|       434.0|
|  2008|       437.8|
|  2009|       425.7|
|  2010|       434.0|
|  2011|       417.8|
|  2012|       418.2|
|  2013|       400.4|
|  2014|       384.3|
|  2015|       398.7|
|  2016|       374.8|
|  2017|       362.7|
|  2018|       342.2|

但我想按时段显示其中的最大值

所以当我输入下面的代码

  ageDF.sort('Period')
       .groupBy('Period')
       .agg(round(sum('Age_specific_birth_rate'), 2).alias('Total'))
       .select('Period', 'Total')
       .agg(max('Total'))
       .show()

我得到输出

> +----------+
  |max(Total)|
  +----------+
  |     437.8| 
  +----------+

但我想得到像这样的东西

  +------+------------+
  |Period|max(Total)  |
  +------+------------+
  |  2008|       395.5|

我该怎么办?你知道吗

谢谢


Tags: 代码ageratealiassortmaxaggperiod
1条回答
网友
1楼 · 发布于 2024-04-19 13:24:10

你可以试试

ageDF.sort('Period')
     .groupBy('Period')
     .agg(round(sum('Age_specific_birth_rate'), 2).alias('Total'))
     .orderBy(functions.col('Total').desc())
     .limit(1)
     .select('Period', 'Total')
     .show()    

相关问题 更多 >