【发布时间】:2016-10-07 11:08:24
【问题描述】:
我有一个数据框,其数值与此类似:
df
probability
0
0.2
0.3
0.4
0.5
我需要找到每个连续条目的概率平均值,并想要以下
expectedMeanDF
mean
0
0.1
0.25
0.35
0.45
1
其中 0.1 是 0 和 0.2 的平均值,0.25 是 0.2 和 0.3 的平均值……
我正在通过以下方式使用窗口函数来执行此操作:
df.withColumn("partition", dp.col("probability")*0)
val window = Window.partitionBy("partition")
val mean = distinctProbability.withColumn("mean", (newdp.col("probability") + lead("probability", 1).over(window)) / 2).drop("partition").drop("probability")
所以我对这种方法有两个问题:
- 不能分别在数据帧的第一个和最后一个位置附加 0 和 1
- 效率不高。我的 df 中的行数可能会达到 3000 万,因此这是一个挑战。
有什么替代方法吗?
【问题讨论】:
标签: apache-spark dataframe apache-spark-sql window-functions