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

Jupyter Notebook中Polars.when/then报ColumnNotFoundError的问题

问题解决:Polars when/then中字符串值触发ColumnNotFoundError

问题根源

Polars的.then()方法默认会将传入的字符串解析为列名,而非字面量字符串值。你直接传入"Opp til og med 3500"时,Polars会尝试查找名为该字符串的列,自然触发ColumnNotFoundError。

修正代码

需要用pl.lit()将字符串包裹,明确告诉Polars这是一个字面量值而非列引用:

df_2023 = df_2023.with_columns(
        pl.when(pl.col("Tillatt totalvekt opp til og med 3500").eq("X"))
        .then(pl.lit("Opp til og med 3500"))
        .when(pl.col("Tillatt totalvekt 3501-7500").eq("X"))
        .then(pl.lit("3501-7500"))
        .when(pl.col("Tillatt totalvekt over 7500").eq("X"))
        .then(pl.lit("Over 7500"))
        .otherwise(pl.lit(None).cast(pl.String))
        .alias("Tillatt totalvekt")
)

# 注意:原代码select中的列名拼写错误,少了一个't',修正后如下
df_2023.select("Tillatt totalvekt").head()

补充说明

  • pl.lit()用于创建一个常量表达式,确保传入的字符串被当作值处理,而非列名。
  • 原代码最后一行的select("Tillat totalvekt")存在拼写错误,正确列名是"Tillatt totalvekt"(多一个't'),修正后才能正确查询新创建的列。

内容的提问来源于stack exchange,提问作者genetiicz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:20:55