python - 如何在 pyspark 数据框中显示特定的最大行
问题描述
我有以下代码
ageDF.sort('Period')
.groupBy('Period')
.agg(round(sum('Age_specific_birth_rate'), 2).alias('Total Births'))
.show()
以上按 Period 对 age_specific_birth_rate 的总和进行分组
所以输出会像
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|
我该怎么办?
谢谢
解决方案
你可以试试
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()
推荐阅读
- ios - 我应该在哪里添加 GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED?
- php - 如何让我的 SQL 结果出现在一个表中,而不是 PHP/HTML 中的两个表中
- sql - 存储过程中的 Oracle 条件 WHERE
- amazon-web-services - 使用排序键的 DynamoDB 版本控制
- javascript - 当您在浏览器上转到上一页时仍会触发 onMouseOver 事件
- javascript - 基于字段值的打字稿条件类型
- php - 非常基本的布尔搜索解析器。失败超过 3 个级别
- python - Django 找不到模块
- azure - 我可以将脚本添加到 SignUP 和 SignIn 组合吗?
- webpack - 带有模板的 HtmlWebpackPlugin 在最后添加了一个不需要的