Совершенно новый для Pyspark, и я реорганизую некоторый код R, который начинает терять свою способность к правильному масштабированию.Я возвращаю фрейм данных с несколькими столбцами с числовыми значениями и пытаюсь отфильтровать этот набор результатов в новый, меньший набор результатов, используя несколько составных условий.
from pyspark.sql import functions as f
matches = df.filter(f.when('df.business') >=0.9 & (f.when('df.city') == 1.0) & (f.when('street') >= 0.7)) |
(f.when('df.phone') == 1) & (f.when('df.firstname') == 1) & (f.when('df.street') == 1) & (f.when('df.city' == 1)) |
(f.when('df.business') >=0.9) & (f.when('df.street') >=0.9) & (f.when('df.city')) == 1))) |
(f.when('df.phone') == 1) & (f.when('df.street') == 1) & (f.when('df.city')) == 1))) |
(f.when('df.lastname') >=0.9) & (f.when('df.phone') == 1) & (f.when('df.business')) >=0.9 & (f.when('df.city') == 1))) |
(f.when('df.phone') == 1 & (f.when('df.street') == 1 & (f.when('df.city') == 1) & (f.when('df.busname') >= 0.6)))
По сути, я просто пытаюсь вернуть новый фрейм данных, "совпадающий", когда столбцы в предыдущем фрейме данных, "sdf", попадают в вышеуказанный критерий.Я прочитал несколько других сообщений о фильтрации, таких как
несколько условий для фильтрации в кадрах искровых данных
PySpark: несколько условий в условии когда
однако я все еще не могу понять это правильно.Полагаю, я мог бы отфильтровать его по одному условию за раз и затем вызвать unionall, но я чувствовал, что это будет более чистый путь.