PySpark DataFrame基于其他列新增列报错:‘Column’对象不可调用,如何解决?
解决PySpark WHEN函数报错:‘Column’ object is not callable
嘿,这个错误其实是个很容易犯的小拼写问题!你把otherwise写成了otherweise——正是这个拼写错误导致了‘Column’ object is not callable的报错。
原因很简单:每次调用when()后,返回的是一个PySpark的Column对象,而你写的otherweise并不是这个对象的内置方法。Python会误以为你想把Column对象当作函数来调用(比如加个括号执行),所以抛出了这个错误。
修正后的代码
只需要把拼写错误改过来就行:
from pyspark.sql.functions import col, when df2 = df.withColumn( "test1", when(col("Country") == "DE", "EUR") .when(col("Country") == "PL", "PLN") .otherwise("Unknown") # 这里修正了拼写 )
额外小技巧:用expr简化多条件判断
如果后续需要添加更多国家和货币的映射,用expr结合SQL风格的CASE WHEN语法会让代码更易读:
from pyspark.sql.functions import expr df2 = df.withColumn( "test1", expr(""" CASE WHEN Country = 'DE' THEN 'EUR' WHEN Country = 'PL' THEN 'PLN' ELSE 'Unknown' END """) )
内容的提问来源于stack exchange,提问作者Kaja
相关产品推荐
相关产品推荐

