2016-06-06 6 views
0

У меня есть dataframe с окнеИМЯстолбец, как это:Реверсивные имена в панд

Names col in DF

Как я могу использовать панд, чтобы полностью изменить имена в формате «ххх, ххх» эффективно? Кроме того, если у вас есть другие советы по очистке струн для таких имен, я бы это оценил!

ответ

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 
+0

Я считаю, что OP попросил любые другие советы по очистке. Вы можете легко (как я уверен, вы знаете) добавить '/?' В конец вашего регулярного выражения, чтобы захватить любые завершающие '/'. – piRSquared

+0

Спасибо за ответы unutbu, Stefan и Andreas Ssieh! Я принимаю это, потому что он является наиболее гибким и объясняет регулярное выражение. @Stefan ваш ответ довольно изящный, и я, вероятно, буду использовать в нем концепции из моего решения. Спасибо! – unpairestgood

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 
Смежные вопросы