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

时间:2016-08-18 20:36:10

标签: python regex pandas

我的专栏中有一些名字需要在词汇中间占据优势,比如Mcgill到McGill,Mcneill到McNeill,O' donnell到O' Donnell等等。

我知道一些文本编辑可以通过在{@ 1}}前面添加捕获的组来实现这一点,但这在大熊猫中不起作用。

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

\U

1 个答案:

答案 0 :(得分:3)

您可以将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

这是你追求的吗?