【问题标题】:pandas - Replace one letter in a string with its capitalpandas - 用大写替换字符串中的一个字母
【发布时间】:2016-12-25 21:47:55
【问题描述】:

我有一个列,其中一些名称需要在单词中间大写,例如 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)

【问题讨论】:

    标签: python regex pandas


    【解决方案1】:

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

    这就是你想要的吗?

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2017-01-28
      • 2016-12-11
      • 1970-01-01
      • 2013-05-21
      • 2014-06-20
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多