首页 > 解决方案 > PySpark 样本按每列不同的分数

问题描述

我有一个数据框df,其中包含一列"freq",每一行代表该行被选择用于输出的概率。我目前正在使用 sampleBy 进行采样:

frac = dict(
    (e.freq, e.freq)
    for e
    in df.select("freq").distinct().collect()
)
result = df.sampleBy("freq", fractions = frac) 

这是受this启发的,但看起来不太干净。有没有办法做同样的事情来避免创建一个像lambda x: x

编辑:

说数据集是

+-----+----+---- 
| Name|freq| other columns
|Alice| 0.3|
|  Bob| 0.2|
|  Joe| 0.3|
...

我希望最终的数据帧包含 Alice 和 Joe 的行,每个行的概率为 0.3,Bob 的行的概率为 0.2,依此类推。

标签: apache-sparkpysparkpyspark-sql

解决方案


推荐阅读