Как получить этот вид подмножества из DataFrame в Pyspark? - PullRequest
0 голосов
/ 06 ноября 2019

Например, у меня есть следующий DataFrame

+-----+----+------+
| idx | id | type |
+-----+----+------+
|   0 | 10 | a    |
|   1 | 10 | b    |
|   2 | 20 | b    |
|   3 | 30 | a    |
+-----+----+------+

Мне нужно такое подмножество с помощью следующих последовательных шагов:

  1. получить все id из type a
    • отфильтрованные id являются 10 и 30
  2. получить все строкигде id такие же, как указано выше
    • выделены строки 0, 1 и 3

Результирующее подмножество DataFrameэто:

+-----+----+------+
| idx | id | type |
+-----+----+------+
|   0 | 10 | a    |
|   1 | 10 | b    |
|   3 | 30 | a    |
+-----+----+------+

Как я могу реализовать это в pyspark? Заранее спасибо.


Еще один дополнительный вопрос, как реализовать следующее.

Если шаг изменен на:

получить все строки, в которых id отличается от указанного выше
  • строк 2 выбрано, поскольку только id этой строки не 10 или 30

В результате DataFrame должен быть:

+-----+----+------+
| idx | id | type |
+-----+----+------+
|   2 | 20 | b    |
+-----+----+------+

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете использовать фильтр и присоединиться к операции. 1.

filterDF = dataDF.filter(dataDF.type == "a")
joinedDS = dataDF.join(filterDF, on="id")

Для пункта 2 вы можете использовать left_anti join

joinedDS1 =  dataDF.join(joinedDS, on="id", how='left_anti')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...