У меня есть такой фрейм данных PySpark:
+----------+-----+
|account_no|types|
+----------+-----+
| 1| K|
| 1| A|
| 1| S|
| 2| M|
| 2| D|
| 2| S|
| 3| S|
| 3| S|
| 4| M|
| 5| K|
| 1| S|
| 6| S|
+----------+-----+
, и я пытаюсь выбрать номера счетов, для которых существует исключительно «S». Например: даже если «1» имеет тип = «S», я не буду выбирать его, потому что он также имеет другие типы. Но я выберу 3 и 6, потому что у них есть только один тип «S».
Что я сейчас делаю, так это: - сначала получите все учетные записи, для которых существует «K», и удалите их; который в этом примере удаляет «1» и «5» - второй - найти все учетные записи, для которых существует «D», и удалить их, который удаляет «2» - третий - найти все учетные записи, для которых существует «M», и удалить «4» ( «2» также получил «М», но он был удален на шаге 2). В-четвертых, найдите все учетные записи, для которых существует «А», и удалите их
Итак, теперь «1», «2», « 4 и 5 удаляются, и я получаю «3» и «6» с эксклюзивным «S».
Но это долгий процесс, как мне его оптимизировать? Спасибо