在熊猫中反转名称

时间:2016-06-06 17:14:27

标签: python pandas

我有一个带有Name列的数据框,如下所示:

Names col in DF

如何有效地使用pandas以“xxx,xxx”格式反转名称?此外,如果您有其他字符串清洁提示,以便更改这些名称,我将不胜感激!

2 个答案:

答案 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