Я искал везде, но пока не нашел решения ... Так, например, у меня есть список имен в моем фрейме данных, такой как: Пенелопа Динс, Коринн М. Перселл, Салли Сиборн, Тереаса Т Аранда и так далее. Мой текущий Regex -
^[A-Z][a-z]+,?\s+(?:[A-Z][a-z]*\.?\s*)?[A-Z][a-z]+
, который ловит большую часть имени. Однако в фрейме данных у меня также есть строки типа «Лицензионная недвижимость в XXX, Digital Marketer в YYY». И вышеупомянутое Regex также ловит "Лицензионную недвижимость" и "Digital Marketer". Я хочу выбрать строки только с именами, и как мне это сделать? Могу ли я как-то написать регулярное выражение, чтобы не перехватывать какие-либо слова, включая слово «at»?
+++
Итак, я работаю над кадром данных только из одного столбца и множества строк, данных выглядит так:
lst = [Penelope Deans, 1/1/2020, Digital Marketer at XXX, Corinne M. Percell, 1/1/2020, Tereasa T., Licensed Real Estate at YYY]
df = pd.DataFrame(lst)
df
Info
0 Penelope Deans
1 1/1/2020
2 Digital Marketer at XXX
3 Corinne M. Percell
4 1/1/2020
5 Tereasa T.
6 Licensed Real Estate at YYY
name_pat = r"^[A-Z][a-z]+,?\s+(?:[A-Z][a-z]*\.?\s*)?[A-Z][a-z]+"
df['Info'].str.findall(name_pat)
Вывод
Info
0 Penelope Deans
1 []
2 Digital Marketer
3 Corinne M. Percell
4 []
5 Tereasa T.
6 Licensed Real Estate
И я ожидаю как:
Info
0 Penelope Deans
1 []
2 []
3 Corinne M. Percell
4 []
5 Tereasa T.
6 []