【问题标题】: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 以获得前向兼容性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2019-04-08
      • 2021-12-03
      • 2017-04-05
      • 2021-03-04
      • 2014-06-10
      相关资源
      最近更新 更多