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

如何在pandas DataFrame中实现类*通配符的查找替换

pandas DataFrame类通配符查找替换实现方案

针对将room列中Private room in house替换为Private的需求,以下是可直接运行的实现方式,同时说明之前代码失效的原因:

常用实现方案

  • 方案1:普通字符串精确替换(新手首选,无正则语法坑)
    如果你明确要替换的子串就是固定内容,直接关闭正则匹配即可,不需要写复杂规则,不会出现正则转义错误:
    df['room'] = df['room'].str.replace("Private room in house", "Private", regex=False)
    
  • 方案2:正则实现类*通配效果(适配批量匹配规则)
    如果要实现类似通配符Private*的效果(即所有以Private开头的内容,不管后面跟什么文本都替换为Private),正则中用.*代表任意长度的任意字符,^代表匹配字符串开头,避免误替换字符串中间出现Private的内容:
    # 匹配所有以Private开头的字符串,统一替换为Private
    df['room'] = df['room'].str.replace(r"^Private.*", "Private", regex=True)
    
    如果不需要限定开头,只需要匹配Private后接的任意内容,去掉表达式开头的^即可。
  • 方案3:整格值精确匹配替换
    如果你需要仅当单元格完整值完全等于Private room in house时才替换(而非替换单元格内的部分子串),可以直接用Series级别的replace方法传映射字典:
    df['room'] = df['room'].replace({"Private room in house": "Private"})
    

之前代码失效原因

你之前写的"Private[]"属于错误的正则写法:正则语法中[]的作用是定义字符集合,比如[a-z]代表匹配任意小写字母,空的[]没有可匹配的字符规则,自然无法匹配Private后面的空格、文本内容,因此无法达到替换效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:39:22