优化 pandas 操作:合并名字/中间/姓氏列

Nat*_*ton 1 python lambda apply pandas

假设我抽取了一些名称样本,例如由各个字段分隔的名称:

indx  First Name   Middle Name     Last Name
0     CHARITIXAN   K.R.,           NICHOLS
1           None   Johnny-Boy      CHAVEZ
2          ISAAC   None            ESPARZA
3        MICHAEL   nan             
4         Andrew                   Pfaff
Run Code Online (Sandbox Code Playgroud)

我们还假设这些数据被格式化为 pandas 数据帧 (df),并且.replace已经进行了足够的清理(通过该方法),剩下的所有值仅是占用的字符串或空字符串。

indx  First Name   Middle Name     Last Name
0     CHARITIXAN   K.R.,           NICHOLS
1                  Johnny-Boy      CHAVEZ
2          ISAAC                   ESPARZA
3        MICHAEL               
4         Andrew                   Pfaff
Run Code Online (Sandbox Code Playgroud)

我想正确地将给定名称的所有部分组合在一起,每个名称段之间只有一个空格。根据我的研究和实施,我发现的最好的解决方案是这样的——使用了我们的解决方案re。这是最佳方法还是对于这种特殊情况有更好的方法?

我的最终方法是这样的:

df['full_name']=df[['First Name', 'Middle Name', 'Last Name']].apply(lambda x: re.sub(' +', ' ', ' '.join(x)), axis=1)
Run Code Online (Sandbox Code Playgroud)

ani*_*in4 5

您可以通过以下方式申请加入:

df['full_name'] = df[['First Name','Middle Name', 'Last Name']].apply(lambda x: ' '.join(x), axis=1)
Run Code Online (Sandbox Code Playgroud)