加权分层抽样,无需更换Pyspark;多重限制

问题描述

我有两个数据帧df1和df2。以下是示例:

df1:

    LSOA    SEX AGE LADY    COUNT  WEIGHT
    E9001    1  0   D0901     7    0.045
    E9001    1  0   D0901     5    0.34
    E9002    1  0   D0901     13   0.062
    E9002    1  0   D0901     2    0.12
    E9003    1  0   D0901     9    0.024
    E9001    1  1   D0901     8    0.11
    E9001    1  1   D0901     3    0.027
    E9002    1  1   D0901     4    0.67
    E9002    1  1   D0901     12   0.029
    E9003    1  1   D0901     1    0.084
    E9001    1  2   D0901     21   0.19
    E9001    1  2   D0901     11   0.45
    E9002    1  2   D0901     9    0.078
    E9002    1  2   D0901     5    0.029
    E9003    1  2   D0901     24   0.49
    E9001    2  0   D0901     18   0.062
    E9001    2  0   D0901     10   0.12
    E9002    2  0   D0901     14   0.0126
    E9002    2  0   D0901     4    0.52
    E9003    2  0   D0901     31   0.0769
    E9001    2  1   D0901     6    0.107
    E9001    2  1   D0901     8    0.075
    E9002    2  1   D0901     9    0.029
    E9002    2  1   D0901     15   0.081
    E9003    2  1   D0901     4    0.31
    E9001    2  2   D0901     10   0.049
    E9001    2  2   D0901     19   0.51
    E9002    2  2   D0901     9    0.074
    E9002    2  2   D0901     2    0.18
    E9003    2  2   D0901     18   0.073
    E9004    1  0   D0902     14   0.017
    E9004    1  0   D0902     2    0.085
    E9005    1  0   D0902     16   0.72
    E9005    1  0   D0902     15   0.13
    E9006    1  0   D0902     1    0.031
    E9004    1  1   D0902     2    0.162
    E9004    1  1   D0902     17   0.041
    E9005    1  1   D0902     14   0.698
    E9005    1  1   D0902     3    0.0932
    E9006    1  1   D0902     4    0.62
    E9004    1  2   D0902     31   0.0231
    E9004    1  2   D0902     21   0.237
    E9004    1  2   D0902     2    0.019
    E9005    1  2   D0902     0    0.17
    E9005    1  2   D0902     19   0.017
    E9006    1  2   D0902     38   0.371
    E9011    2  0   D0902     24   0.619
    E9011    2  0   D0902     51   0.926
    E9012    2  0   D0902     11   0.097
    E9012    2  0   D0902     41   0.48
    E9014    2  0   D0902     2    0.093
    E9011    2  1   D0902     20   0.017
    E9011    2  1   D0902     21   0.19
    E9012    2  1   D0902     41   0.38
    E9012    2  1   D0902     27   0.042
    E9014    2  1   D0902     52   0.18
    E9011    2  2   D0902     17   0.254
    E9011    2  2   D0902     38   0.0721
    E9012    2  2   D0902     4    0.623
    E9012    2  2   D0902     19   0.0389
    E9014    2  2   D0902     44   0.25

和数据帧df2:

LADY   SEX AGE  N
D0901   1   0   1
D0901   1   1   0
D0901   1   2   2
D0901   2   0   3
D0901   2   1   1
D0902   1   0   4
D0902   1   1   1
D0902   1   2   2
D0902   2   0   3
D0902   2   1   1

其中LADY,SEX,AGE列是阶层(键),而WEIGHT分别是0.0到1.0之间的值。

我希望获取df1的N个阶层= [LADY,SEX,AGE]的N个样本,而无需使用df2作为多个键(阶层)进行替换。

是否有一种方法可以使用pyspark将WEIGHT列用作该层(或行)被包括在样本中的概率而无需替换呢?

所以我最终得到了一个数据帧df3,每个层有N行df1。

我了解pyspark使用分数而不是整数,并且可以为每个样本应用限制。但是,我希望使用df2中的N列为每个阶层设置不同的限制。

我希望这是有道理的。非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)