Применение лямбда-выражения к pandas фрейму данных и получение правильного результата обратно, но в окружении [] - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь использовать лямбду и регулярные выражения для извлечения текста из строки в pandas dataframe, у меня есть правильное регулярное выражение и я могу заполнить новый столбец правильными данными, но он окружен []?

Код для построения фрейма данных:

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)

Код для применения регулярного выражения к каждой строке в фрейме данных, а также для генерации и заполнения нового столбца с результатом:

df_carTypes['Car Class Code'] = df_carTypes['Car Class Description'].apply(lambda x: re.findall(r'^\w{1,2}',x))

Результат:

По мере необходимости я получаю новый столбец с правильным результатом, но [] окружает вывод, например [A]

Может кто-нибудь помогает?

Извините, я не могу отформатировать лучше ...

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Потому что re.findall возвращает список строк, чья строка содержит квадратную скобку.

Совет по использованию pandas: уменьшите использование apply и узнайте больше о встроенных функциях , они удобны и быстры. Вот один из способов сделать это с str.extract:

df_carTypes['Car Class Code'] = df_carTypes['Car Class Description'].str.extract('^(\w{1,2})')
0 голосов
/ 24 апреля 2020

Это связано с тем, что 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...