【问题标题】:python spark change dataframe column data type to int errorpython spark将数据框列数据类型更改为int错误
【发布时间】:2017-02-17 05:19:24
【问题描述】:
我想将列类型转换为 int 并获取前 3 行
df.withColumn("rn", rowNumber().over(windowSpec).cast('int')).where("rn"<=3).drop("rn").show()
但是我这个错误
TypeError: unorderable types: str() <= int()
【问题讨论】:
标签:
python
apache-spark
types
casting
【解决方案1】:
错误在这里:
.where("rn"<=3)
如果您以后遇到类似问题,您可以通过以下方法解决这个问题。关注
TypeError: unorderable types: str() <= int()
是 Python 异常,没有 Py4JError。这通常意味着您可以忽略 JVM 问题并专注于核心 Python。您明确比较事物的代码的唯一部分是:
"rn" <= 3
如果你希望它是一个 SQL 文字,你应该传递一个字符串:
.where("rn <= 3")
如果您希望将rn 解析为列,请使用col 函数:
from pyspark.sql.functions import col
.where(col("rn") <= 3)
此外,rowNumber 功能已在最新版本中删除。您应该使用 row_number 以获得前向兼容性。