对现代 Polars 中某个类型的所有列进行操作

问题描述 投票:0回答:1

我有一段代码可以在 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 中的工作代码?

python dataframe vectorization python-polars
1个回答
0
投票
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()
  )
© www.soinside.com 2019 - 2024. All rights reserved.