Использования Series.str.replace
для выполнения регулярных выражений строковых подстановок:
df['Name'] = df['Name'].str.replace(r'(.+),\s+(.+)', r'\2 \1')
Узора регулярного выражения (.+), (.+)
означает
( begin group #1
.+ match 1-or-more of any character
) end group #1
, match a literal comma
\s+ match 1-or-more whitespace characters
( begin group #2
.+ match 1-or-more of any character
) end group #2
Второй аргумент r'\2 \1'
, говорит str.replace
для замены подстроки, соответствующий шаблон с группой # 2 с последующим пробелом, за которым следует группа №1.
import pandas as pd
names = '''\
John Snow
Black, Jack
Jim Bean/
Draper, Don
'''
df = pd.DataFrame({'Name': names.splitlines()})
# Name
# 0 John Snow
# 1 Black, Jack
# 2 Jim Bean/
# 3 Draper, Don
df['Name'] = df['Name'].str.replace(r'(.+),\s+(.+)', r'\2 \1')
дает
Name
0 John Snow
1 Jack Black
2 Jim Bean/
3 Don Draper
Я считаю, что OP попросил любые другие советы по очистке. Вы можете легко (как я уверен, вы знаете) добавить '/?' В конец вашего регулярного выражения, чтобы захватить любые завершающие '/'. – piRSquared
Спасибо за ответы unutbu, Stefan и Andreas Ssieh! Я принимаю это, потому что он является наиболее гибким и объясняет регулярное выражение. @Stefan ваш ответ довольно изящный, и я, вероятно, буду использовать в нем концепции из моего решения. Спасибо! – unpairestgood