我的专栏中有一些名字需要在词汇中间占据优势,比如Mcgill到McGill,Mcneill到McNeill,O' donnell到O' Donnell等等。
我知道一些文本编辑可以通过在{@ 1}}前面添加捕获的组来实现这一点,但这在大熊猫中不起作用。
这是我尝试过的。这甚至可能吗?
\U
答案 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
这是你追求的吗?