2016-07-21 91 views
4

我有一個包含熊貓數據框(除其他列)全名:拆分大熊貓柱和最後一個元素添加到新列

fullname 
martin master 
andreas test 

我想創建沿着空白分裂的全名專欄的一個新列空間並將最後一個元素分配給新列。結果應該是這樣的:

fullname   lastname 
martin master  master 
andreas test  test 

我認爲它會像這樣工作:

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

不過,我得到一個KeyError: -1

我用[-1],那就是分裂的最後一個元素小組,以確保我得到真正的姓氏。在某些情況下(例如,名稱爲andreas martin master),這有助於獲取姓氏,即主人

那麼我該如何做到這一點?

+0

你可以在一杆做:'DF [ 'FIRST_NAME', '姓氏'] = DF [ '全名'] str.split(。 '',expand = True)' – MaxU

+0

或更好''df [['first_name','last_name']] = df ['fullname']。str.split(expand = True)'' – jezrael

回答

4

您需要另一個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

如果需要創建兩個新列,使用str.rsplit參數爲n=1。如果只需要最後一列EdChum的解決方案是更好的:

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