Python pyspark聚合,每行值使用udf

Python pyspark聚合,每行值使用udf,python,dataframe,apache-spark,pyspark,apache-spark-sql,Python,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我对pyspark非常陌生,我的问题如下: 我有这个示例数据框,我想将with column(avg coeff)应用到具有相同值(在国家)的国家/地区列的每一行,并给我一个输出 这是我自己制作的数据帧,与我实际工作的数据帧类似: +--------+--------+---+-----+----+----+-----+------------+---------+----+ |Relegion| Country|Day|Month|Year|Week|cases|Weekly Coeff|Av

我对pyspark非常陌生,我的问题如下:

我有这个示例数据框,我想将
with column(avg coeff)
应用到具有相同值(在国家)的国家/地区列的每一行,并给我一个输出

这是我自己制作的数据帧,与我实际工作的数据帧类似:

+--------+--------+---+-----+----+----+-----+------------+---------+----+
|Relegion| Country|Day|Month|Year|Week|cases|Weekly Coeff|Avg Coeff|rank|
+--------+--------+---+-----+----+----+-----+------------+---------+----+
|   Hindu|   India|  3|    1|  20|   1|   30|         0.5|    0.616|   3|
|   Hindu|   India|  2|    1|  20|   1|   20|         0.7|    0.616|   3|
|   Hindu|   India|  5|    2|  20|   2|  100|         0.9|    0.616|   3|
|   Hindu|   India|  6|    2|  20|   2|  160|         0.4|    0.616|   3|
|   Hindu|   India|  6|    2|  20|   1|  160|         0.4|    0.616|   3|
|   Hindu|   India|  1|    1|  20|   2|    5|         0.6|    0.616|   3|
|   Hindu|   India|  1|    1|  20|   1|    5|         0.6|    0.616|   3|
|   Hindu|   India|  2|    1|  20|   2|   20|         0.7|    0.616|   3|
|   Hindu|   India|  4|    2|  20|   1|   10|         0.6|    0.616|   3|
|   Hindu|   India|  3|    1|  20|   2|   30|         0.5|    0.616|   3|
|   Hindu|   India|  4|    2|  20|   2|   10|         0.6|    0.616|   3|
|   Hindu|   India|  5|    2|  20|   1|  100|         0.9|    0.616|   3|
|  Muslim|Pakistan|  1|    1|  20|   1|  100|         0.6|    0.683|   2|
|  Muslim|Pakistan|  4|    2|  20|   1|  200|         0.6|    0.683|   2|
|  Muslim|Pakistan|  2|    1|  20|   1|   20|         0.9|    0.683|   2|
|  Muslim|Pakistan|  5|    2|  20|   1|  300|         0.8|    0.683|   2|
|  Muslim|Pakistan|  2|    1|  20|   2|   20|         0.9|    0.683|   2|
|  Muslim|Pakistan|  3|    1|  20|   1|   50|         0.4|    0.683|   2|
|  Muslim|Pakistan|  6|    2|  20|   1|  310|         0.8|    0.683|   2|
|  Muslim|Pakistan|  3|    1|  20|   2|   50|         0.4|    0.683|   2|
+--------+--------+---+-----+----+----+-----+------------+---------+----+

我必须找到平均系数(每个国家一个值),我手动添加了一列来测试我找不到的结果。

您可以在窗口上使用平均值:

from pyspark.sql import functions as F, Window

df2 = df.withColumn('Avg_coeff', F.avg('Weekly_coeff').over(Window.partitionBy('Country')))

请注意,在列名中使用空格不是一个好做法。

您可以在窗口上使用average:

from pyspark.sql import functions as F, Window

df2 = df.withColumn('Avg_coeff', F.avg('Weekly_coeff').over(Window.partitionBy('Country')))
请注意,在列名中使用空格不是一个好的做法