Я переношу код из pandas в pyspark. Мой исходный фрейм данных выглядит так:
a b c
0 1 insert 1
1 2 update 1
2 3 seed 1
3 4 insert 2
4 5 update 2
5 6 delete 2
6 7 snapshot 1
, а операция (в python / pandas), которую я применяю:
df.b = pd.Categorical(df.b, ordered=True, categories=['insert', 'seed', 'update', 'snapshot', 'delete'])
df.sort_values(['c', 'b'])
, приводит к выходному кадру данных :
a b c
0 1 insert 1
2 3 seed 1
1 2 update 1
6 7 snapshot 1
3 4 insert 2
4 5 update 2
5 6 delete 2
Я не уверен, как лучше всего настроить упорядоченные категории с помощью pyspark, и мой первоначальный подход создает новый столбец с использованием case-when и пытается использовать его впоследствии:
df = df.withColumn(
"_precedence",
when(col("b") == "insert", 1)
.when(col("b") == "seed", 2)
.when(col("b") == "update", 3)
.when(col("b") == "snapshot", 4)
.when(col("b") == "delete", 5)
)