我正在尝试对pyspark数据帧中的值进行排序,但是它向我显示了奇怪的输出。而不是按整数排序,而是按整数的第一位排序
我尝试过sort和orderBy方法,两者给出的结果相同
sdf=spark.read.csv("dummy.txt", header=True)
sdf.sort('1',ascending=False).show()
我正在关注输出
+---+
| 98|
| 9|
| 8|
| 76|
| 7|
| 68|
| 6|
| 54|
| 5|
| 43|
| 4|
| 35|
| 34|
| 34|
| 3|
| 2|
| 2|
| 2|
| 10|
+---+
任何人都可以向我解释一下这件事
答案 0 :(得分:0)
由于您的列包含String
类型的数据,所以String
被转换为一个字符序列,并对这些字符进行排序。其作用类似于映射函数。
因此,您可以进行类型转换,然后应用orderBy
函数以达到所需的结果。
>>> df
DataFrame[Numb: string]
>>> df.show()
+----+
|Numb|
+----+
| 20|
| 19|
| 1|
| 200|
| 60|
+----+
>>> df.orderBy(df.Numb.cast('int'),ascending=False).show()
+----+
|Numb|
+----+
| 200|
| 60|
| 20|
| 19|
| 1|
+----+