Мой первый вопрос ... У меня есть Pandas фрейм данных с колонкой 'Description'
. Столбец имеет ссылку и имя, которое я хочу разделить на два столбца. У меня есть 'Names'
в отдельном df:
# Description # Names
--------------------------------------- ---------------
0 A long walk by Miss D'Bus 0 Teresa Green
1 A day in the country by Teresa Green 1 Tim Burr
2 Falling Trees by Tim Burr 2 Miss D'Bus
3 Evergreens by Teresa Green
4 Late for Dinner by Miss D'Bus
Я успешно провел поиск в описаниях, чтобы определить, имеет ли оно совпадающее имя, используя строку регулярных выражений со всеми именами:
regex = '$|'.join(map(re.escape, df['Names'])) + '$'
df['Reference'] = df['Description'].str.split(regex, expand=True)
чтобы получить
# Description Reference
-----------------------------------------------------------------------
0 A long walk by Miss D'Bus A long walk by
1 A day in the country by Teresa Green A day in the country by
2 Falling Trees by Tim Burr Falling Trees by
3 Evergreens by Teresa Green Evergreens by
4 Late for Dinner by Miss D'Bus Late for Dinner by
Но я хочу, чтобы соответствующее (= удаленный разделитель) Name было добавлено в качестве дополнительного столбца.
Попытка добавления *? к регулярному выражению типа this
Я попытался разбить столбец «Описание» с помощью столбца «Справочник»
df['Name'] = df['Description'].str.split(df['Reference'])
Я попытался нарезать столбец «Описание» с помощью используя длину строки 'Reference', например
# like: df['Name'] = df['Description'].str[-10:]
df['Name'] = df['Description'].str[-(df['Reference'].str.len()):]
, но я получаю постоянную длину среза.