我有一段代码可以在 Polars 0.20.19 中运行,但我不知道如何使其在 Polars 1.10 中运行。
工作代码(在 Polars 0.20.19 中)与以下内容非常相似:
def format_all_string_fields_polars() -> pl.Expr:
return (
pl.when(
(pl.col(pl.Utf8).str.strip().str.lengths() == 0) | # ERROR ON THIS LINE
(pl.col(pl.Utf8) == "NULL")
)
.then(None)
.otherwise(pl.col(pl.Utf8).str.strip())
.keep_name()
)
df.with_columns(format_all_string_fields_polars())
我已将
pl.Utf8
dtype 转换为 pl.String
,但它一直给我同样的错误:
AttributeError:“ExprStringNameSpace”对象没有属性“strip”
该函数应该对数据帧的所有字符串字段就地执行 When-Then 操作,但返回数据帧中的所有列(也包括非字符串列)。
如何将此函数转换为 Polars 1.10 中的工作代码?
pl.Utf8
更名为pl.String
.str.strip()
更名为.str.strip_chars()
.str.lengths()
分为 .str.len_chars()
和 .str.len_bytes()
.keep_name()
更名为.name.keep()
def format_all_string_fields_polars() -> pl.Expr:
return (
pl.when(
(pl.col(pl.String).str.strip_chars().str.len_chars() == 0) |
(pl.col(pl.String) == "NULL")
)
.then(None)
.otherwise(pl.col(pl.String).str.strip_chars())
.name.keep()
)