Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字符串列中交换两个子字符串_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 在字符串列中交换两个子字符串

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

我想用数据帧中的字符串本身的一部分替换字符串

例如:

将MSc Joe L.Scott更改为
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