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

如何在Polars DataFrame中替换整串匹配的字符串而非子串?

解决方案

要实现仅替换**整个字符串完全等于"0"**的单元格,你需要用条件判断精准匹配,而非子串替换。str.replace会替换所有匹配的子串,这就是它把"011212"改成"-111212"的核心原因。

推荐两种高效实现方式:

方式一:针对所有字符串列(推荐)

如果数据框中同时存在字符串列与其他类型列,这个方法仅处理字符串列,避免类型报错:

df = df.with_columns(
    pl.col(pl.String).when(pl.col(pl.String) == "0").then("-1").otherwise(pl.col(pl.String))
)

方式二:处理所有列(假设全为字符串类型)

若确定所有列都是字符串类型,可简化为:

df = df.with_columns(
    pl.all().when(pl.all() == "0").then("-1").otherwise(pl.all())
)

原理说明

  • pl.when(condition).then(value).otherwise(value)是Polars的条件表达式,仅当条件(单元格值完全等于"0")满足时才执行替换,否则保留原内容。
  • 用pl.col(pl.String)筛选字符串列,确保不会误处理数字、布尔等其他类型列,适配你数千列的场景,执行效率更高。

内容的提问来源于stack exchange,提问作者Míriam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:32:03