Проблема: у меня есть два фрейма данных - один с набором ненормализованных названий продуктов, а другой с набором регулярных выражений, привязанных к нормализованным названиям продуктов. Мне нужно сопоставить ненормализованные заголовки с некоторыми регулярными выражениями, которые связаны с нормализованными заголовками. Это должно иметь больше смысла с примерами данных ниже.
Первый кадр данных (raw_titles):
| | Title | Release Date |
|---|------------------------------------------------|--------------|
| 1 | Apple iPad Air (3rd generation) - 64GB | 01/01/20 |
| 2 | Philips Hue White Ambiance A19 LED Smart Bulbs | 08/12/20 |
| 3 | Powerbeats Pro Totally Wireless Earphones | 06/20/19 |
Второй кадр данных (regex_titles):
| | Regex | Manufacturer | Model |
|---|-------------------------------------------------------|--------------|-------------------------|
| 1 | /ipad\s?air(?=.*(\b3\b|3rd\s?gen|2019))|\bair\s?3\b/i | Apple | iPad Air (2019) |
| 2 | /hue(?=.*cher)/i | Philips | Hue White Ambiance Cher |
| 3 | /powerbeats\s?pro/i | Beats | Powerbeats Pro |
Идея состоит в том, взять каждый заголовок в raw_titles и пропустить его через все значения в regex_titles, чтобы увидеть, есть ли совпадение. Как только это будет сделано, в raw_titles должны появиться два дополнительных столбца: «Производитель» и «Модель», которые соответствуют серии regex_titles, с которой они сопоставляются (если не было совпадений, она просто оставалась бы пустой.
Тогда итоговая таблица будет выглядеть как это:
| | Title | Release Date | Manufacturer | Model |
|---|------------------------------------------------|--------------|--------------|-----------------|
| 1 | Apple iPad Air (3rd generation) - 64GB | 01/01/20 | Apple | iPad Air (2019) |
| 2 | Philips Hue White Ambiance A19 LED Smart Bulbs | 08/12/20 | | |
| 3 | Powerbeats Pro Totally Wireless Earphones | 06/12/19 | Beats | Powerbeats Pro |