Pandas用正则将冒号空格后字母大写时报Series无re属性如何解决
报错原因
AttributeError: 'Series' object has no attribute 're'触发原因是Pandas的Series列对象不支持直接调用标准库re的方法,操作列内的字符串需要先调用.str访问器,再使用对应的处理方法。- 原有代码还存在未定义变量
s的问题,无需单独声明变量,直接用Series内置的str.replace即可完成批量正则替换。
正确实现代码
import pandas as pd import re # 源数据 df = pd.DataFrame(data={'A': ['abc: aaa 123: 111', 'edf: 111', 'ghi: a11 324: aaa', 'jkm: bn2 jsk: 1f4']}) # 正则匹配冒号+空格后的首个英文字母,转为大写 df['A'] = df['A'].str.replace(r":\s([a-zA-Z])", lambda match: f": {match.group(1).upper()}", regex=True)
正则规则说明:
r":\s([a-zA-Z])"精准匹配:后紧跟的英文字母,捕获分组拿到该字母后转大写再拼接回去,不会修改冒号后接数字的内容,完全匹配需求。
输出结果验证
print(df) # 输出 A 0 abc: Aaa 123: 111 1 edf: 111 2 ghi: A11 324: Aaa 3 jkm: Bn2 jsk: 1f4
内容的提问来源于stack exchange,提问作者imnotarobotre
相关产品推荐
相关产品推荐

