2017-09-04 36 views
1

我有以下的數據幀:Python Pandas lambda函數來更改列的所有值?

AIRCRAFT 
B738 (C-GKWJ) 
A321 (C-FJNX) 

,並使用此代碼只提取TYPE,

def extract_type(aircraft): 
    return aircraft.split(" ")[0] 

data['TYPE'] = data['AIRCRAFT'].apply(lambda x: extract_type(x)) 

我的期望是:

AIRCRAFT  TYPE 
B738 (C-GKWJ) B738 
A321 (C-FJNX) A321 

但即時得到:

AIRCRAFT  TYPE 
B738 (C-GKWJ) B738 (C-GKWJ) 
A321 (C-FJNX) A321 (C-FJNX) 

測試extract_type參數功能時,它工作正常

def extract_type(aircraft): 
    return aircraft.split(" ")[0] 

    extract_type("B737 (C-GWJT)") 

返回「737」

爲什麼它不與數據幀和lambda函數工作?由於

回答

1

您可以使用str.split

data['TYPE'] = data['AIRCRAFT'].str.split().str[0] 

你得到

AIRCRAFT TYPE 
0 B738 (C-GKWJ) B738 
1 A321 (C-FJNX) A321 

您還可以使用str.extract雖然分裂是理想的

data['TYPE'] = data['AIRCRAFT'].str.extract('(\w+)\s\(', expand = False) 
+0

謝謝費沙,都是工作很好 –

+0

很高興它工作。如果問題完全解決,您可以接受答案 – Vaishali