我正在尝试对列值满足特定条件的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|
+---+----+------+-------------+------+
是否有一种很好的编程方式来实现这一目标,即,对于某一列中给出的每个值,采用相同数量的行?非常感谢您的帮助!
您可以使用samplyBy()
来返回分层样本,而无需根据每个层次上给出的分数进行替换。
samplyBy()