拆分名称和中间首字母的字符串? (python3)

时间:2017-05-31 19:35:19

标签: python python-3.x

我有一个数据集,但它包括位置#,"姓氏,名字M" ,,

我能分开它,但是我希望中间的首字母不见了,白色的空间也消失了,这就是我所拥有的:

df = pd.read_excel('C:\\HR employees\\EE Listing  as of 5-30-17.xlsx')

df['Last Name'], df['First Name'] = df['NAME'].str.split(',', 1).str
del df['NAME']

df.to_excel('output.xlsx')

它会分割名字和姓氏,但我怎样才能摆脱中间的名字呢?

2 个答案:

答案 0 :(得分:2)

df = pd.read_excel('C:\\HR employees\\EE Listing  as of 5-30-17.xlsx')

df['Last Name'], df['First Name'] = df['NAME'].str.split(',').str
df['First Name'] = df['First Name'].apply(lambda s: s[:-2] if s[-2] == ' ' else s)
del df['NAME']    

df.to_excel('output.xlsx')

lambda函数检查第一个名称中的倒数第二个字符是否为空格。这将删除初始(如果存在),同时还处理由两部分组成的名字。

测试用例:(名称--->姓氏--->名字)

  • Smith,John R --->史密斯--->约翰
  • JOHN,DOE --->约翰---> DOE
  • Jackson,Jean Paul M --->杰克逊--->让·保罗
  • Gonzales,El Torado --->冈萨雷斯--->埃尔托拉多

答案 1 :(得分:2)

如何将第一个名称复制到中间字母之间的空格?

df['First Name'] = 'dave M'
name = ''
for ch in df['First Name']:
     if ch != ' ':
          name += ch
     else: break
df['First Name'] = name


# OR ALTERNATIVLY 
df['First Name'] = df['First Name'].split()[0]