我有以下数据框:
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)")
返回' B737'
为什么它不能处理数据框和lambda函数?感谢
答案 0 :(得分: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)