Создать новые строки в Pandas фрейме данных на основе совпадений df.str.findall? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть фрейм данных current_df Я хочу создать новую строку для каждого совпадения с регулярным выражением, которое встречается в каждой записи column_1. В настоящее время у меня есть это ниже:

current_df['new_column']=current_df['column_1'].str.findall('(?<=ABC).*?(?=XYZ)')

Это добавляет список совпадений для регулярного выражения в каждой строке. Как создать новую строку для каждого матча? Я предполагаю что-то с пониманием списка, но я не уверен, что это будет точно.

Вывод df будет выглядеть примерно так:

    column_1                                                                 column2        new_column
    ABC_stuff_to_match_XYZ_ABC_more_stuff_to_match_XYZ...                    data           _stuff_to_match_
    ABC_stuff_to_match_XYZ_ABC_more_stuff_to_match_XYZ...                    data           _more_stuff_to_match_
    ABC_a_different_but_important_piece_of_data_XYZ_ABC_find_me_too_XYZ...   different_stuff _a_different_but_important_piece_of_data_
    ABC_a_different_but_important_piece_of_data_XYZ_ABC_find_me_too_XYZ...   different_stuff _find_me_too_                

1 Ответ

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

Использование можно использовать extractall, а с merge:

df.merge(df.column_1.str.extractall('(?<=ABC)(.*?)(?=XYZ)')
           .reset_index(level=-1, drop=True),
         left_index=True,
         right_index=True
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...