【发布时间】:2020-05-26 05:21:14
【问题描述】:
我正在将一些代码从 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)
)
【问题讨论】:
标签: dataframe pyspark categorical-data