MYj*_*Yjx 13 python sql apache-spark apache-spark-sql pyspark
我想计算从分组的Spark数据帧的列中有多少记录是真的,但我不知道如何在python中这样做.例如,我有一个带有a的数据region,salary以及IsUnemployed带有IsUnemployed布尔值的列.我想看看每个地区有多少失业人员.我知道我们可以做一个filter然后groupby但我想在下面同时生成两个聚合
from pyspark.sql import functions as F
data.groupby("Region").agg(F.avg("Salary"), F.count("IsUnemployed"))
Run Code Online (Sandbox Code Playgroud)
zer*_*323 22
可能最简单的解决方案是普通CAST(C风格,其中TRUE- > 1,FALSE- > 0)SUM:
(data
.groupby("Region")
.agg(F.avg("Salary"), F.sum(F.col("IsUnemployed").cast("long"))))
Run Code Online (Sandbox Code Playgroud)
有一点更具有普遍性和惯用的解决方案是CASE WHEN用COUNT:
(data
.groupby("Region")
.agg(
F.avg("Salary"),
F.count(F.when(F.col("IsUnemployed"), F.col("IsUnemployed")))))
Run Code Online (Sandbox Code Playgroud)
但这里显然是一种矫枉过正.
| 归档时间: |
|
| 查看次数: |
6402 次 |
| 最近记录: |