具有列条件的随机采样Pyspark数据帧

问题描述 投票:0回答:1

我正在尝试对列值满足特定条件的Pyspark数据帧进行随机采样。我想使用sample方法根据列值随机选择行。假设我有以下数据框:

+---+----+------+-------------+------+
| id|code|   amt|flag_outliers|result|
+---+----+------+-------------+------+
|  1|   a|  10.9|            0|   0.0|
|  2|   b|  20.7|            0|   0.0|
|  3|   c|  30.4|            0|   1.0|
|  4|   d| 40.98|            0|   1.0|
|  5|   e| 50.21|            0|   2.0|
|  6|   f|  60.7|            0|   2.0|
|  7|   g|  70.8|            0|   2.0|
|  8|   h| 80.43|            0|   3.0|
|  9|   i| 90.12|            0|   3.0|
| 10|   j|100.65|            0|   3.0|
+---+----+------+-------------+------+

我想基于0, 1, 2, 3列仅对result的每一个抽样1(或任何特定数量),所以我最终要这样做:

+---+----+------+-------------+------+
| id|code|   amt|flag_outliers|result|
+---+----+------+-------------+------+
|  1|   a|  10.9|            0|   0.0|
|  3|   c|  30.4|            0|   1.0|
|  5|   e| 50.21|            0|   2.0|
|  8|   h| 80.43|            0|   3.0|
+---+----+------+-------------+------+

是否有一种很好的编程方式来实现这一目标,即,对于某一列中给出的每个值,采用相同数量的行?非常感谢您的帮助!

python random pyspark pyspark-sql pyspark-dataframes
1个回答
0
投票

您可以使用samplyBy()来返回分层样本,而无需根据每个层次上给出的分数进行替换。

samplyBy()
© www.soinside.com 2019 - 2024. All rights reserved.