我试图在pandas数据框中使用lambda和regex从字符串中提取文本,我的regex是正确的,可以用正确的数据填充一个新的列,但它被[]包围了?
建立数据框架的代码。
carTypes = {'Car Class Description' : ['A - ECAR - Economy',
'C - ICAR - Intermediate',
'D - DCAR - Full Size',
'E - FFAR - Large SUV - 5 Seater',
'E1 - GFAR - Large SUV - 7 Seater']}
df_carTypes = pd.DataFrame(carTypes)
代码应用regex到数据框架中的每一行 并生成并填充一个新的列与结果。
df_carTypes['Car Class Code'] = df_carTypes['Car Class Description'].apply(lambda x: re.findall(r'^\w{1,2}',x))
结果:
我得到了一个新的列,按照要求有正确的结果,但输出的周围是[ ],例如:[A]。
谁能协助一下?
对不起,我不能更好的格式化... ...
因为 re.findall
返回一个字符串列表,其字符串化包含方括号。
使用pandas的小贴士:减少使用 apply
并对内置功能进行更多的探索,它们既方便又快捷。这里有一种方法,就是用 str.extract
:
df_carTypes['Car Class Code'] = df_carTypes['Car Class Description'].str.extract('^(\w{1,2})')
这是由于以下原因造成的 re.findall()
返回一个列表。你可以使用 re.search()
和 .group()
返回一个字符串结果。
df_carTypes['Car Class Code'] = df_carTypes['Car Class Description'].apply(lambda x: re.search(r'^\w{1,2}',x).group())
结果。
Car Class Description Car Class Code
0 A - ECAR - Economy A
1 C - ICAR - Intermediate C
2 D - DCAR - Full Size D
3 E - FFAR - Large SUV - 5 Seater E
4 E1 - GFAR - Large SUV - 7 Seater E1