拆分pandas列并将最后一个元素添加到新列

时间:2016-07-21 08:18:14

标签: python pandas split

我有一个包含(除了其他列)全名的pandas数据框:

 fullname
 martin master
 andreas test

我想创建一个新列,它沿着空格分割fullname列,并将最后一个元素分配给新列。结果应如下所示:

 fullname           lastname
 martin master      master
 andreas test       test

我认为它会像这样工作:

df['lastname'] = df['fullname'].str.split(' ')[-1]

但是,我得到KeyError: -1

我使用[-1],这是拆分组的最后一个元素,以确保我得到真正的姓氏。在某些情况下(例如像 andreas martin master 这样的名称),这有助于获取姓氏,即 master

那我怎么能这样做呢?

2 个答案:

答案 0 :(得分:8)

您需要另一个str来访问每行的最后一个拆分,您所做的主要是尝试使用不存在的标签索引该系列:

In [31]:

df['lastname'] = df['fullname'].str.split().str[-1]
df
Out[31]:
         fullname lastname
0   martin master   master
1    andreas test     test

答案 1 :(得分:1)

如果需要创建2个新列,请使用带参数n=1的{​​{3}}。如果只需要最后一列,str.rsplit解决方案更好:

print (df)
                fullname
0          martin master
1           andreas test
2  andreas martin master

df[['first_name','last_name']] = df['fullname'].str.rsplit(expand=True, n=1)
print (df)
                fullname      first_name last_name
0          martin master          martin    master
1           andreas test         andreas      test
2  andreas martin master  andreas martin    master