Python 在字符串列中交换两个子字符串
我想用数据帧中的字符串本身的一部分替换字符串 例如: 将MSc Joe L.Scott更改为Python 在字符串列中交换两个子字符串,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想用数据帧中的字符串本身的一部分替换字符串 例如: 将MSc Joe L.Scott更改为Joe L.Scott MSc 因此,只需要移动MSc。我可以用正则表达式解决这个问题,但不知道如何用数据帧解决这个问题 result = re.sub(r'(MSc)(.*)' , r'\2 \1',s) 我在想这样的事情(但是这里的替换和值是什么?) 或者使用DataFrame.sub() 但是,尽管有文档,我并没有把它作为一个人为的例子来完成,请考虑一下 df = pd.DataFrame({'N
Joe L.Scott MSc
因此,只需要移动MSc。我可以用正则表达式解决这个问题,但不知道如何用数据帧解决这个问题
result = re.sub(r'(MSc)(.*)' , r'\2 \1',s)
我在想这样的事情(但是这里的替换和值是什么?)
或者使用DataFrame.sub()
但是,尽管有文档,我并没有把它作为一个人为的例子来完成,请考虑一下
df = pd.DataFrame({'Name' : ['MSc Joe L. Scott', 'BSc J. Doe']})
df
Name
0 MSc Joe L. Scott
1 BSc J. Doe
您可以在此处使用str.replace
替换为反向引用。这可以轻松处理多个不同的名称
designations = ['MSc', 'BSc']
df['Name_modified'] = df['Name'].str.replace(
rf"^({'|'.join(designations)})\s(.*)$", r"\2 \1")
df
Name Name_modified
0 MSc Joe L. Scott Joe L. Scott MSc
1 BSc J. Doe J. Doe BSc
您可以重新分配此结果。:非常感谢!!是否也可以从列Name
读取并将其添加到列Name\u modified
以保留原始字符串?
designations = ['MSc', 'BSc']
df['Name_modified'] = df['Name'].str.replace(
rf"^({'|'.join(designations)})\s(.*)$", r"\2 \1")
df
Name Name_modified
0 MSc Joe L. Scott Joe L. Scott MSc
1 BSc J. Doe J. Doe BSc