繁体   English   中英

从字符串中提取字词的最后一个作为熊猫中的新列

[英]Extract first and last words from strings as a new column in pandas

我正在努力根据另一列中的字符串创建两个新列。

我有的

     Profile
0    Technician
1    Service Engineer
2    Sales and Service Support Engineer

我想要拥有的

     First              Last
0    Technician         NaN
1    Service            Engineer
2    Sales              Engineer

我的尝试是使用类似的解决方案

new = tl['Profile'].str.split(' ')
tl['First'] = new[0]
tl['Last'] = new[1]

但这仅对First是正确的。

让我们在这里尝试str.extract

df['Profile'].str.extract(r'^(?P<First>\S+).*?(?P<Last>\S+)?$')

        First      Last
0  Technician       NaN
1     Service  Engineer
2       Sales  Engineer

由于仅需要处理一个单词的句子,因此没有太多的str方法会如此优雅。


您也可以在这里使用str.partition

u = df['Profile'].str.partition()
pd.DataFrame({'First': u[0], 'Last': u[2].str.split().str[-1]})

        First      Last
0  Technician       NaN
1     Service  Engineer
2       Sales  Engineer

没有正则表达式,使用循环

姓氏

k=[]
for i in df_names_test['Name']:
    h=len(i.split(" "))
    j=i.split(" ")[h-1]
    k.append(j)


df_names_test["Last"]=k

名字

k=[]
for i in df_names_test['Name']:

    j=i.split(" ")[0]
    k.append(j)


df_names_test["First"]=k

使用Lambda函数:名字

df_names_test['First']=df_names_test['Name'].apply(lambda x: x.split(" ")[0])

姓:

df_names_test['Last']=df_names_test['Name'].apply(lambda x: x.split(" ")[-1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM