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
相关产品推荐
相关产品推荐

