如何计算性能的数量,使性能= P<=5;P> 5,术;= 15;P> 15
address | performance = P | 机舱 | 589 |
---|---|
机舱 | 0 |
机舱 | 48 |
机舱 | 318 |
机舱 | 378 |
机舱 | 52 |
机舱 | 45 |
机舱 | 201 |
机舱 | 416 |
机舱 | 29日 |
机舱 | 183 |
机舱 | 53 |
机舱 | 7 |
机舱 | 127 |
机舱 | 157 |
机舱 | 248 |
机舱 | 10 |
机舱 | 317 |
机舱 | 2 |
机舱 | 4 |
以您的数据框架为例:
+--------+-----------+
| address|performance|
+--------+-----------+
|NACELLES| 589|
|NACELLES| 0|
|NACELLES| 48|
|NACELLES| 318|
您只需使用when函数进行聚合和求和:
df.groupBy("address").agg(
(F.sum(F.when(F.col("performance") <= 5, 1)) / F.count("*")).alias("P<=5"),
(
F.sum(F.when((F.col("performance") > 5) & (F.col("performance") <= 15), 1))
/ F.count("*")
).alias("P>5 & P<=15"),
(F.sum(F.when(F.col("performance") > 15, 1)) / F.count("*")).alias("P>15"),
).show()
+--------+----+-----------+----+
| address|P<=5|P>5 & P<=15|P>15|
+--------+----+-----------+----+
|NACELLES|0.15| 0.1|0.75|
+--------+----+-----------+----+