Polars:使用原生表达式API替换下划线后的字符为大写
Polars:使用原生表达式API替换下划线后的字符为大写
当然有啦!你完全可以用Polars的原生表达式API来实现这个需求,不用依赖map_elements和Python的re模块,不仅代码更简洁,性能也会更出色(尤其是处理大数据集的时候)。
你的需求很明确:把字符串中下划线后面的小写字母转成大写,同时去掉下划线,比如accessible_bidding_strategy.id要变成accessibleBiddingStrategy.id。下面是用Polars原生API实现的完整方案:
import polars as pl # 调整打印配置,方便查看完整的字符串结果 pl.Config(fmt_str_lengths=100) # 初始化示例数据 df = pl.DataFrame( { "id": [ "accessible_bidding_strategy.id", "accessible_bidding_strategy.name", "accessible_bidding_strategy.owner_customer_id", ] } ) # 用原生表达式完成转换 df = df.with_columns( pl.col("id") .str.replace(r"_(\w)", r"\u\1") .alias("parsed_id") ) print(df)
输出结果
shape: (3, 2) ┌───────────────────────────────────────────────┬───────────────────────────────────────────┐ │ id ┆ parsed_id │ │ --- ┆ --- │ │ str ┆ str │ ╞═══════════════════════════════════════════════╪═══════════════════════════════════════════╡ │ accessible_bidding_strategy.id ┆ accessibleBiddingStrategy.id │ │ accessible_bidding_strategy.name ┆ accessibleBiddingStrategy.name │ │ accessible_bidding_strategy.owner_customer_id ┆ accessibleBiddingStrategy.ownerCustomerId │ └───────────────────────────────────────────────┴───────────────────────────────────────────┘
代码说明
这里的核心是Polars原生的str.replace方法:
- 正则表达式
_(\w)匹配下划线+任意单词字符,并把下划线后的字符捕获为第一个分组 - 替换字符串
\u\1的作用是:将捕获到的第一个分组(也就是下划线后面的字符)转成大写,同时自动去掉原来的下划线
和原方法的对比
和你之前用map_elements结合re.sub的方法相比,原生表达式有这些优势:
- 无需额外引入Python的
re模块,代码更聚合 - 性能更优:原生表达式在Polars的内部引擎执行,避免了Python层面的循环开销,大数据场景下速度提升明显
- 类型更安全:不需要手动指定
return_dtype,Polars会自动推断结果类型
备注:内容来源于stack exchange,提问作者dikesh
相关产品推荐
相关产品推荐

