Разделите Spark DataFrame на два DataFrames (70% и 30%) на основе столбца id, сохранив порядок - PullRequest
0 голосов
/ 24 октября 2018

У меня есть искровой фрейм данных, который похож на

id  start_time   feature
1   01-01-2018   3.567
1   01-02-2018   4.454
1   01-03-2018   6.455
2   01-02-2018   343.4
2   01-08-2018   45.4
3   02-04-2018   43.56
3   02-07-2018   34.56
3   03-07-2018   23.6

Я хочу иметь возможность разбить его на два фрейма данных на основе столбца id . Поэтому я должен сгруппировать по столбцу idСортировка по start_time и 70% строк в один фрейм данных и 30% строк в другой фрейм данных с сохранением порядка. Результат должен выглядеть следующим образом:

Dataframe1:
id  start_time   feature
1   01-01-2018   3.567
1   01-02-2018   4.454
2   01-02-2018   343.4
3   02-04-2018   43.56
3   02-07-2018   34.56

Dataframe2:
1   01-03-2018   6.455
2   01-08-2018   45.4
3   03-07-2018   23.6

Я использую Spark 2.0 с python,Каков наилучший способ реализовать это?

1 Ответ

0 голосов
/ 01 ноября 2018

Мне нужно было создать два окна:

w1 =  Window.partitionBy(df.id).orderBy(df.start_time)
w2 =  Window.partitionBy(df.id)

df = df.withColumn("row_number",F.row_number().over(w1))\
                     .withColumn("count",F.count("id").over(w2))\
                     .withColumn("percent",(F.col("row_number")/F.col("count")))
train = df.filter(df.percent<=0.70)
test = df.filter(df.percent>0.70)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...