我有一个带有Name列的数据框,如下所示:
如何有效地使用pandas以“xxx,xxx”格式反转名称?此外,如果您有其他字符串清洁提示,以便更改这些名称,我将不胜感激!
答案 0 :(得分:0)
使用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
答案 1 :(得分:0)
也许你可以使用reverse
函数尝试这样的事情:
d = {'name':['Bran Stark','Jon Snow','Rhaegar Targaryen']}
df = pd.DataFrame(data=d)
df['new name'] = df['name'].apply(lambda x : ', '.join(reversed(x.split(' '))))
print(df['new name'])
0 Stark, Bran
1 Snow, Jon
2 Targaryen, Rhaegar