【发布时间】:2020-05-06 14:22:53
【问题描述】:
假设我抽取了一些名称样本,例如由各个字段分隔的名称:
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
我们还假设这些数据被格式化为 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
我想正确地将给定名称的所有部分与一个单独的名称组合在一起
每个名称段之间的空间。根据我的研究和实施,
我找到的最佳解决方案是this - 使用的是re。这是最佳方式还是存在
对于这种特殊情况有更好的选择吗?
我的最终方法是这样的:
df['full_name']=df[['First Name', 'Middle Name', 'Last Name']].apply(lambda x: re.sub(' +', ' ', ' '.join(x)), axis=1)
【问题讨论】:
-
你不能把它们加在一起吗
df['full_name']=df['First Name'] +' ' + df['Middle Name'] + ' ' + df['Last Name'] -
@kenan 如果中间名或姓氏为空,则不是“只有一个空格”。
-
假设名称是您的列列表
df[names].apply(lambda x : x.str.cat(sep=' '),axis=1)
标签: python pandas lambda apply