如何在python中循环和计算聚合度量



我有一个看起来像这样的数据帧:

年龄是否管道工0
ID 日期权重作业
1 202101 20-3 41
2 202101 30-40 5 油漆工

方法1

您可以通过创建数据帧df的临时视图来使用spark-sql

df.createOrReplaceTempView('my_data')

然后运行以下sql查询

results_df = sparkSession.sql("""
SELECT
Date,
agecat,
weightcat,
JOB,
SUM(YesNo)/COUNT(YesNo) as my_metric
FROM
my_data
GROUP BY
Date,
agecat,
weightcat,
JOB
""")

方法2

使用pyspark-api

from pyspark.sql import functions as F
results_df = df.groupBy(
F.col("Date"),
F.col("agecat"),
F.col("weightcat"),
F.col("JOB"),
).agg(
F.lit(F.sum("YesNO")/F.count("YesNO")).alias("my_metric")
)

输出

results_df.show()
+------+------+---------+-------+---------+
|  Date|agecat|weightcat|    JOB|my_metric|
+------+------+---------+-------+---------+
|202101| 20-30|        4|plumber|      1.0|
|202101| 30-40|        5|painter|      0.0|
+------+------+---------+-------+---------+

最新更新