将lambda regex应用于pandas数据框,得到正确的结果,但却被[ ]包围。

问题描述 投票:0回答:2

我试图在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]。

谁能协助一下?

对不起,我不能更好的格式化... ...

python regex pandas dataframe
2个回答
0
投票

因为 re.findall 返回一个字符串列表,其字符串化包含方括号。

使用pandas的小贴士:减少使用 apply 并对内置功能进行更多的探索,它们既方便又快捷。这里有一种方法,就是用 str.extract:

df_carTypes['Car Class Code'] = df_carTypes['Car Class Description'].str.extract('^(\w{1,2})')

0
投票

这是由于以下原因造成的 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
© www.soinside.com 2019 - 2024. All rights reserved.