![](/img/trans.png)
[英]Function to remove a part of a string before a capital letter in Pandas Series
[英]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.