Как разбить строки фрейма данных pyspark на основе списка номеров строк? - PullRequest
0 голосов
/ 17 апреля 2019

Я создал фрейм данных pyspark, который образно выглядит так: -

>>> df

f1 | f2 | ... | fn | row_num
------------------------------
10 | 50 | ... |100 |    1
20 | 50 | ... |200 |    2
30 | 50 | ... |300 |    3
40 | 50 | ... |400 |    4
50 | 50 | ... |500 |    5

Затем я также создал случайный список номеров строк следующим образом: -

my_list = [[2, 5],[4, 1, 3]]

В зависимости от структуры этого списка я хочу создать фреймы данных pyspark следующим образом: -

>>> split_df[0]

    f1 | f2 | ... | fn | row_num
    ------------------------------
    20 | 50 | ... |200 |    2
    50 | 50 | ... |500 |    5

>>> split_df[1]

    f1 | f2 | ... | fn | row_num
    ------------------------------
    40 | 50 | ... |400 |    4
    10 | 50 | ... |100 |    1
    30 | 50 | ... |300 |    3

Как мне разделить мой df по my_list номерам строк?

Я не хочу использовать df.RandomSplit() метод.

1 Ответ

2 голосов
/ 17 апреля 2019

Кажется, что вы хотите разделить свой DataFrame на список, основываясь на значениях my_list.

Вы можете использовать pyspark.sql.Column.isin в понимании списка:

from pyspark.sql.functions import col
split_df = [df.where(col('row_num').isin(x)) for x in my_list]
...