2017-09-04 258 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