【发布时间】:2019-01-10 18:59:00
【问题描述】:
我是 pyspark 的新手,如果有人能帮助解决问题,我将不胜感激。
假设我在 pyspark 中有如下数据框:
+----+----+----+----+----+
|col1|col2|col3|col4|col5|
+----+----+----+----+----+
| A|2001| 2| 5| 6|
| A|2001| 3| 6| 10|
| A|2001| 3| 6| 10|
| A|2002| 4| 5| 2|
| B|2001| 2| 9| 4|
| B|2001| 2| 4| 3|
| B|2001| 2| 3| 4|
| B|2001| 3| 95| 7|
+----+----+----+----+----+
如果col1、col2 和col3 中的对应值相同,我想得到col4 的平均值,然后去掉前3 列中重复值的行.
例如,第一列两个col1、col2、col3的值是相同的,所以,我们想消除其中一个,更新col4的值作为平均值col4 和 col5。结果应该是:
+----+----+----+----+----+
|col1|col2|col3|col4|col5|
+----+----+----+----+----+
| A|2001| 2| 4.5| 7|
| A|2001| 3| 6| 10|
| A|2002| 4| 5| 2|
| B|2001| 2|5.33|3.67|
| B|2001| 3| 95| 7|
+----+----+----+----+----+
类似的问题已经被问过,但在 pandas 数据框中。这个问题是在 pyspark 数据框中提出的
【问题讨论】:
-
IIUC
df.groupby("col1", "col2", "col3").agg(f.mean("col4"), f.mean("col5"))其中f由import pyspark.sql.functions as f定义
标签: apache-spark pyspark apache-spark-sql mean