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

如何用字典替换Polars列中的字符串内容?

在Polars中用字典替换字符串的正确方法

你可以直接用Polars原生的replace方法实现和Pandas.replace()类似的功能,完全不需要转成Pandas处理,效率更高。

错误原因

你之前的写法pl.col("List").str.replace_all(lambda key: key,dict())报错是因为str.replace_all的参数逻辑不对——该方法第一个参数是匹配模式,第二个是替换值/函数,不能直接传入字典。

方法一:原生replace方法(推荐,向量化操作)

这是最直接的方式,和Pandas的.replace()行为一致:

import polars as pl

df = pl.DataFrame({'List': ['Systems', 'Software', 'Cleared']})
mapping = {'Systems':'Sys','Software':'Soft' ,'Cleared':'Clr'}

# 替换匹配的字符串,未匹配的保留原内容
df = df.with_columns(
    pl.col("List").replace(mapping, default=pl.col("List"))
)

print(df)

方法二:正则批量替换(适合键为正则表达式的场景)

如果你的字典键需要正则匹配,可以动态生成匹配模式,再用str.replace_all配合回调函数替换:

import polars as pl

df = pl.DataFrame({'List': ['Systems', 'Software', 'Cleared']})
mapping = {'Systems':'Sys','Software':'Soft' ,'Cleared':'Clr'}

# 生成匹配所有键的正则模式
pattern = "|".join(mapping.keys())

df = df.with_columns(
    pl.col("List").str.replace_all(pattern, lambda match: mapping[match.group(0)])
)

print(df)

输出结果

两种方法都会得到你期望的输出:

shape: (3, 1)
┌──────┐
│ List │
│ ---  │
│ str  │
╞══════╡
│ Sys  │
│ Soft │
│ Clr  │
└──────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:55:19