具有在某些特定条件下要过滤掉的数据框。根据过滤条件,结果为1或0。以前,如果我仅拆分数据框以查找匹配项,则此方法有效。我决定对其进行一些更改,并希望全部结果和适当标记它们的功能。这是我尝试过的一个小例子。
matches = df.withColumn('MATCHES', f.when(
((df.NAME >= 0.9) & (df.STREET >= 0.7) & (sdf.STREETNUM >= 0.7))
|
((df.PHONE == 1) & (sdf.NAME == 1) & (df.STREET == 1) & (df.CITY == 1) & (df.STREETNUM == 1)), 1).otherwise(0))
通过此作业的每个记录都应在新列中附加1或0。 1是匹配项,0是不匹配项。例如:输入文件有50,000条记录,我希望50,000个结果中的每个结果都为0或1。当我以前让此代码块仅对复合条件进行简单过滤时,我将得到大约2500 1,这是正确的。向其中添加withColumn / when / otherwise组件已更改了我的结果集,由于条件和输入文件未更改,我无法理解为什么。例如,输出现在有4个1和2400 0个。以前有2500个1,其余则为0。
预期结果将类似于
+------+------+------------+------------+------------+-------+
|NAME |PHONE |STREET |STREETNUM |CITY |MATCHES|
+------+------+------------+------------+------------+-------+
|.97 | .94 | .88 | .77 | .99 | 1 |
|.43 | .78 | .76 | .87 | .64 | 0 |
|.62 | .21 | .98 | .50 | .02 | 0 |
|.78 | .96 | .11 | .10 | .05 | 0 |
|.99 | .99 | .99 | .99 | .99 | 1 |
+------+------+------------+------------+------------+-------+