在熊猫列中重新排列名称顺序

时间:2019-07-27 17:23:55

标签: python-3.x string pandas split apply

背景

我有以下df

import pandas as pd
df= pd.DataFrame({'Text' : ['Hi', 'Hello', 'Bye'], 
                          'P_ID': [1,2,3], 
                          'Name' :['Bobby,Bob Lee Brian', 'Tuck,Tom T ', 'Mark, Marky '],
                         })

              Name     P_ID Text
0   Bobby,Bob Lee Brian 1   Hi
1   Tuck,Tom T          2   Hello
2   Mark, Marky         3   Bye

目标

1)重新排列Name列,例如Bobby,Bob Lee BrianBob Lee Brian Bobby

2)创建新列Rearranged_Name

所需的输出

           Name        P_ID Text  Rearranged_Name
0   Bobby,Bob Lee Brian 1   Hi    Bob Lee Brian Bobby 
1   Tuck,Tom T          2   Hello Tom T Tuck
2   Mark, Marky         3   Bye   Marky Mark

问题

如何实现所需的输出?

1 个答案:

答案 0 :(得分:1)

Series.str.replace,之前和之后的值一起使用,\s*表示,之后的空白(可选):

df['Rearranged_Name'] = df['Name'].str.replace(r'(.+),\s*(.+)', r'\2 \1')
print (df)
    Text  P_ID                 Name      Rearranged_Name
0     Hi     1  Bobby,Bob Lee Brian  Bob Lee Brian Bobby
1  Hello     2           Tuck,Tom T           Tom T Tuck
2    Bye     3          Mark, Marky           Marky Mark

或使用Series.str.split作为助手DataFrame,并将各列连接在一起:

df1 = df['Name'].str.split(',\s*', expand=True)
df['Rearranged_Name'] = df1[1] + ' ' + df1[0]
相关问题