问题描述
我有两个数据帧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 (将#修改为@)