You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:43:12