我如何在scala dataframe中按月度顺序将月份从1月到12月

时间:2019-03-10 07:09:41

标签: scala dataframe

+---------+------------------+
|    Month|sum(buss_days)|
+---------+------------------+
|    April|             83.93|
|   August|            94.895|
| December|             53.47|
| February|             22.90|
|  January|             97.45|
|     July|            95.681|
|     June|            23.371|
|    March|            35.957|
|      May|              4.24|
| November|              1.56|
|  October|              1.00|
|September|             93.51|
+---------+------------------+ 

我想要这样的输出

+ ------------- + ------------------ + |月|总和(avg_buss_days)| + --------- + ------------------ + |一月| 97.45   二月| 22.90      三月| 35.957      四月| 83.93 | |可能| 4.24       六月| 23.371       七月| 95.681     八月| 94.895 | |九月| 93.51    十月| 1.00   11月| 1.56   十二月| 53.47 | + --------- + ------------------ +

这就是我所做的 df.groupBy(“ Month [order(match(month $ month,month.abb)),]”) 而我得到了..... 线程“主要” org.apache.spark.sql.AnalysisException中的异常:无法解析列名称“ Month [order(match(month(month $ month,month.abb)),]”。这里的月份是数据框中的列名称

1 个答案:

答案 0 :(得分:2)

将“月份转换为日期”表单进行转换,并对项目应进行的排序。

请找到代码段unix_timestamp(col("Month"),"MMMMM")

Df.sort(unix_timestamp(col("Month"),"MMMMM")).show
+---------+-------------+
|    Month|avg_buss_days|
+---------+-------------+
|  January|        97.45|
| February|        22.90|
|    March|       35.957|
|    April|        83.93|
|      May|         4.24|
|     June|       23.371|
|     July|       95.681|
|   August|       94.895|
|September|        93.51|
|  October|         1.00|
| November|         1.56|
| December|        53.47|
+---------+-------------+