假设我有这个Dataframe:
val df = Seq(("Mike",1),("Kevin",2),("Bob",3),("Steve",4)).toDF("name","score")
我想过滤这个Dataframe,这样它只返回“score”列大于等于75%的行。我该怎么做?非常感谢,祝你今天愉快!
zzlelutf1#
你想把你的过滤器建立在上四分位数的基础上。它也被称为上四分位数或第75经验四分位数,75%的数据位于这一点以下。根据这里的答案,你可以用spark的 approximateQuantile 想要得到你想要的:
approximateQuantile
val q = df.stat.approxQuantile("score", Array(.75), 0) q: Array[Double] = Array(3.0)
此阵列( q )给出第三和第四个四分位数之间的边界。使用一个简单的Spark过滤器可以得到你想要的:
q
df.filter($"score" >= q.head).show +-----+-----+ | name|score| +-----+-----+ | Bob| 3| |Steve| 4| +-----+-----+
1条答案
按热度按时间zzlelutf1#
你想把你的过滤器建立在上四分位数的基础上。
它也被称为上四分位数或第75经验四分位数,75%的数据位于这一点以下。
根据这里的答案,你可以用spark的
approximateQuantile
想要得到你想要的:此阵列(
q
)给出第三和第四个四分位数之间的边界。使用一个简单的Spark过滤器可以得到你想要的: