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

如何无需指定列名对Polars DataFrame所有列执行字符串替换?

在Polars中批量对所有列执行字符串替换的正确方法

你之前代码报错的原因

你用的pl.all().map(lambda x: x.replace("A", "B"), df)逻辑不对:map是用来处理Series里的单个元素的,不是用来对整列做字符串替换的。而且你把整个DataFrame传给map的参数,Polars没法推断正确的数据类型,所以才会抛出ValueError: Cannot infer dtype from 'shape: (150000, 150)这个错误。

正确实现方法

分两种场景给你方案:

  • 场景1:只对字符串列执行替换(推荐,避免非字符串列报错)
    如果你的DataFrame里混了数值、日期等非字符串列,用pl.col(pl.Utf8)精准选中所有字符串类型的列,再批量替换:
df = df.with_columns(pl.col(pl.Utf8).str.replace("A", "B"))
  • 场景2:确定所有列都是字符串类型
    直接用pl.all()选中所有列,调用str.replace即可:
df = df.with_columns(pl.all().str.replace("A", "B"))

额外说明

别用select,用with_columns更合适——它只会修改你指定的列,同时保留其他所有列;而select会直接替换整个DataFrame的列集合,容易丢数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:52:07