如何定义数据帧的排序顺序



我想根据周数和星期几对数据帧进行排序。

周数变量为双精度值。

星期几是一个文本(星期一,星期二,星期三,星期四,星期五,星期六,星期日)。

这是我的数据帧:

week_number  |  day_of_week  |  job_count  | eff_rate
-----------------------------------------------------
1            | Fri           |  30         |  70
1            | Mon           |  50         |  80       
1            | Sat           |  340        |  20
1            | Sun           |  1          |  8
1            | Thu           |  3          |  40
1            | Tue           |  4          |  10
1            | Wed           |  50         |  70
2            | Fri           |  120        |  180
2            | Mon           |  12         |  80
2            | Sat           |  11         |  9
2            | Sun           |  80         |  11
2            | Tue           |  60         |  14
2            | Thu           |  4          |  23
2            | Wed           |  1          |  50

我认为我需要定义一个函数,在其中定义排序应如何对变量的内容进行排序。 假设该函数称为手动排序。 manualsort() 会是什么样子,这样就可以这样使用?

 df.sort(asc("week_number"), manualsort("day_of_week"))

结果将是这样的:

week_number  |  day_of_week  |  job_count  | eff_rate
-----------------------------------------------------
1            | Mon           |  50         |  80
1            | Tue           |  4          |  10       
1            | Wed           |  50         |  70
1            | Thu           |  3          |  40
1            | Fri           |  120        |  180
1            | Sat           |  340        |  20
1            | Sun           |  1          |  8

我是 Scala 的新手,不知道如何编写函数

Scala函数遵循你描述的格式;但有时一个例子比模板有用得多。

def addThem( a:Int, b:Int ) : Int = {
  var sum:Int = 0
  sum = a + b
  return sum
}

关键点:

  • 函数括号中的项是传递给功能。
  • 这些项目必须符合的类型是在变量名称,以冒号:作为分隔符。
  • 作为参数传递的变量用逗号分隔。
  • 如果函数具有声明的(而不是推断的)返回类型,则它是"函数签名的类型",因此它位于函数签名之后,使用相同的"冒号约束类型"模式(如def getName() : String
  • 等号之后将代码块分配给函数定义。 代码块必须具有与函数签名兼容的退出类型(在这种情况下,代码块必须返回与Int兼容的内容)
  • 代码块中的变量定义具有相同的name:Type格式,但偶尔允许推断类型。

有了这些规则,我相信您将能够开始编写一些函数。 对于排序,您有效地提供了Java Comparator的Scala版本,除了在Scala中有更多方法可以做到这一点,因为您不需要将函数包装在面向对象Comparator类服装中。

相关内容

  • 没有找到相关文章

最新更新