我创建了一个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()
方法。
答案 0 :(得分:2)
似乎您想根据my_list
的值将DataFrame分成一个列表。
您可以在列表理解中使用pyspark.sql.Column.isin
:
from pyspark.sql.functions import col
split_df = [df.where(col('row_num').isin(x)) for x in my_list]