pandas replace正则替换无法移除DataFrame列末尾数字问题咨询
错误原因
你写的正则存在匹配范围的逻辑错误,原正则r'\d* \(.*\)'的匹配规则是强绑定结构:
- 匹配0到多个数字
- 数字后必须紧跟「半角空格+左括号」
- 接着匹配任意字符直到右括号
这个规则只会处理紧挨在「空格+左括号」前面的数字,其他位置的数字完全不会被命中。你示例里残留的China2末尾的2、China, Hong Kong Special Administrative Region3末尾的3,后面都没有跟着空格+括号的结构,根本不在匹配范围内,所以替换后数字会残留。
修正方案
根据你的实际需求选对应写法即可:
- 如果要保留原逻辑里「删除空格+括号及括号内全部内容」的规则,同时清除所有位置的数字,用下面的代码:
df_energy['Country'].replace(r'\s*\(.*\)|\d+', '', regex=True, inplace=True)
- 如果需求是把所有数字、空白字符、半角/全角括号本身全部删掉(不处理括号内的其他内容),用下面的代码:
df_energy['Country'].replace(r'[\d\s()()]', '', regex=True, inplace=True)
内容的提问来源于stack exchange,提问作者antagonist001
相关产品推荐
相关产品推荐

