【问题标题】:Custom sorting in pyspark dataframespyspark 数据框中的自定义排序
【发布时间】:2020-03-05 00:25:42
【问题描述】:

是否有任何推荐的方法来为 pyspark 中的分类数据实现自定义排序顺序?理想情况下,我正在寻找 pandas 分类数据类型提供的功能。

因此,给定具有Speed 列的数据集,可能的选项是["Super Fast", "Fast", "Medium", "Slow"]。我想实现适合上下文的自定义排序。

如果我使用默认排序,类别将按字母顺序排序。 Pandas 允许将列数据类型更改为分类,并且部分定义给出了自定义排序顺序:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Categorical.html

【问题讨论】:

  • 你不会得到像你在 pandas 中那样的通用解决方案。对于 pyspark,您可以按数字或字母排序,因此使用您的速度列,我们可以创建一个新列,其中超快为 1,快为 2,中为 3,慢为 4,然后对其进行排序。如果您可以提供示例带有速度列的数据,我很乐意为您提供代码

标签: python pandas apache-spark pyspark apache-spark-sql


【解决方案1】:

您可以使用orderBy 并使用when 定义您的自定义排序:

from pyspark.sql.functions col, when

df.orderBy(when(col("Speed") == "Super Fast", 1)
           .when(col("Speed") == "Fast", 2)
           .when(col("Speed") == "Medium", 3)
           .when(col("Speed") == "Slow", 4)
           )

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2013-10-12
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多