Spark DataFrame含两位数与三位数的整数列排序异常求助
Spark DataFrame含两位数、三位数列的正确排序方法
如果你的amount列排序后出现三位数排在顶部、两位数在下方的情况,大概率是该列实际为字符串类型(而非你认为的整数类型)——字符串按字典序排序时,"100"会比"99"靠前(首字符'1'<'9')。
解决步骤:
- 先将字符串类型的
amount列转换为整数类型 - 再执行排序操作
示例代码:
# 转换列类型并升序排序 df = df.withColumn("amount", df["amount"].cast("integer")).sort("amount") # 或者用orderBy,效果一致 df = df.withColumn("amount", df["amount"].cast("integer")).orderBy("amount")
如果需要降序排序,只需在列名前调用desc():
from pyspark.sql.functions import desc df = df.withColumn("amount", df["amount"].cast("integer")).orderBy(desc("amount"))
验证提示:可以先用
df.printSchema()查看amount列的实际数据类型,确认是否为string而非integer。
内容的提问来源于stack exchange,提问作者Krishnendra Singh Tomar
相关产品推荐
相关产品推荐

