如何在Pandas中使用通配符去除列字符串左右两侧冗余字符
解决方案
方案1:使用str.extract直接提取目标内容(推荐)
你的col4结构固定为[动态数字].UNITED STATES.[球队名].NBA.csv,直接用正则捕获目标球队名即可,性能高且匹配精准,适配大型DataFrame处理:
df['col4'] = df['col4'].str.extract(r'UNITED STATES\.([A-Z]+)\.NBA')
正则逻辑:
- 匹配固定前缀
UNITED STATES.(.是正则特殊字符,需要用\转义) - 捕获后续连续的大写字母(即球队名称部分)
- 匹配固定后缀
.NBA,避免误匹配其他内容
方案2:使用str.replace一次性清除两侧冗余
如果习惯用替换逻辑实现,可通过正则同时匹配左右两侧冗余内容替换为空:
df['col4'] = df['col4'].str.replace(r'^.*UNITED STATES\.|\.NBA.*$', '', regex=True)
正则逻辑:
^.*UNITED STATES\.:匹配从字符串开头到UNITED STATES.的全部内容|:或关系,同时匹配左右两类冗余内容\.NBA.*$:匹配从.NBA到字符串末尾的全部内容- 所有匹配到的内容直接替换为空,剩余部分就是目标球队名
小提示
你之前尝试的代码有两个问题:
- 正则里多了未配对的右括号
),会触发正则语法错误 - pandas高版本
str.replace默认关闭正则模式,需要显式加regex=True参数才会按正则规则匹配
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

