【问题标题】:PySpark : How we select the dataframe which takes the highest values by Matricule?PySpark:我们如何选择矩阵中取最高值的数据框?
【发布时间】:2021-11-26 23:19:42
【问题描述】:
我想通过矩阵选择取最高值的数据框。以本表为例。
| Matricule |
Count |
Value |
| MA12 |
A101 |
25 |
| MA12 |
K215 |
25 |
| MA12 |
C231 |
70 |
| MA12 |
G348 |
70 |
| MA12 |
B401 |
70 |
| MA12 |
E291 |
70 |
| MA20 |
D34 |
16 |
| MA20 |
A45 |
16 |
| MA20 |
A40 |
15 |
| MA20 |
G16 |
18 |
| MA20 |
K26 |
18 |
我们得到这张表:
| Matricule |
Count |
Value |
| MA12 |
C231 |
70 |
| MA12 |
G348 |
70 |
| MA12 |
B401 |
70 |
| MA12 |
E291 |
70 |
| MA20 |
G16 |
18 |
| MA20 |
K26 |
18 |
请我们帮帮我。谢谢。
【问题讨论】:
标签:
arrays
dataframe
pyspark
【解决方案1】:
我用来解决您的问题的方法是创建一个具有 Function Max 的 maxValue 列,并在 Matricule 列上进行分区。
您可以在下面找到代码:
from pyspark.sql import functions as F
from pyspark.sql import Window as W
(df
.withColumn('maxValue', F.max(F.col('Value')).over(W.partitionBy(F.col('Matricule'))))
.filter(F.col('Value') == F.col('maxValue'))
.drop('maxValue')
)