繁体   English   中英

pandas - 用字母大写替换字符串中的一个字母

[英]pandas - Replace one letter in a string with its capital

我有一些名字,需要在这个词的中间占据一席之地,比如Mcgill到McGill,Mcneill到McNeill,O'donnell到O'Donnell等等。

我知道一些文本编辑可以通过在\\U前面添加捕获的组来实现这一点,但这在pandas中不起作用。

这是我尝试过的。 这甚至可能吗?

import pandas as pd
names =  pd.Series(["Mcgill", "Mcneill", "O'donnell", "Mctavish"])

names.replace(r'\bMc([a-z])', r'Mc\U$1', inplace=True)

您可以将apply()re.sub()结合使用:

import pandas as pd, re
names = pd.Series(["Mcgill", "Mcneill", "O'donnell", "Mctavish"])

def capitalize(name):
    rx = re.compile(r'(?:(?<=Mc)|(?<=O\'))([a-z])')

    def repl(m):
        char = m.group(1)
        return char.upper()

    return rx.sub(repl,name)

names = names.apply(capitalize)  
# 0       McGill
# 1      McNeill
# 2    O'Donnell
# 3     McTavish

这是你追求的吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM