Код: Выделить всё
event_time variable value step ID
1456942945 var_a 123.4 1 id_1
1456931076 var_b 857.01 1 id_1
1456932268 var_b 871.74 1 id_1
1456940055 var_b 992.3 2 id_1
1456932781 var_c 861.3 2 id_1
1456937186 var_c 959.6 3 id_1
1456934746 var_d 0.12 4 id_1
1456942945 var_a 123.4 1 id_2
1456931076 var_b 847.01 1 id_2
1456932268 var_b 871.74 1 id_2
1456940055 var_b 932.3 2 id_2
1456932781 var_c 821.3 3 id_2
1456937186 var_c 969.6 4 id_2
1456934746 var_d 0.12 4 id_2
Мне нужно подмножество этого кадра данных, как показано ниже
Strong>: для каждого идентификатора возьмите все строки, соответствующие шагам 1, 2, 3, и часть данных шага 4, начиная со значения времени first_event шага 4, скажем, первых 25%. Это порционирование должно выполняться с учетом времени события.
Я могу сделать это для одного идентификатора после подмножества DF на основе этого идентификатора:
Код: Выделить всё
# single step partitioning
threshold_value = DF.selectExpr(f"percentile_approx({"event_time"}, {0.25}) as threshold").collect()[0]["threshold"]
partitioned_df= DF.filter(col(column_name)
Подробнее здесь: [url]https://stackoverflow.com/questions/79126205/how-to-split-a-pyspark-dataframe-taking-a-portion-of-data-for-each-different-id[/url]