如何解决我想知道如何通过pyspark数据框过滤器 我想知道如何在pyspark数据帧过滤器中排成一行
我想知道如何在pyspark数据帧过滤器中排成一行。
- 示例
word ㅣ count ㅣ rank
'hello' ㅣ 10 ㅣ 1
'hi' ㅣ 5 ㅣ 2
'python'ㅣ 3 ㅣ 3
'spark' ㅣ 2 ㅣ 4
'java' ㅣ 1 ㅣ 5
结果
word ㅣ count ㅣ rank
'hello' ㅣ 10 ㅣ 1
'hi' ㅣ 5 ㅣ 2
'python'ㅣ 3 ㅣ 3
'etc' ㅣ 3 ㅣ 4
从排名的第4位开始,我想通过将计数添加到etc组来排成一行。我该怎么办?
解决方法
按条件分组。
import pyspark.sql.functions as f
df.groupBy(f.when(f.col('rank') < 4,f.col('word')).otherwise(f.lit('\'etc\'')).alias('word')) \
.agg(f.sum('count').alias('count'),f.min('rank').alias('rank')) \
.orderBy('rank').show(10,False)
+--------+-----+----+
|word |count|rank|
+--------+-----+----+
|'hello' |10 |1 |
|'hi' |5 |2 |
|'python'|3 |3 |
|'etc' |3 |4 |
+--------+-----+----+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。