我一直在到处搜索,但还没有找到任何解决方案……例如,我的数据框中有一个名称列表,例如:Penelope Deans、Corinne M. Percell、Sally Seaborn、Tereasa T. Aranda 和很快。我目前的正则表达式是
^[A-Z][a-z]+,?\s+(?:[A-Z][a-z]*\.?\s*)?[A-Z][a-z]+
抓住了大部分的名字。但是,在数据框中,我也有类似“XXX 的许可房地产,YYY 的数字营销人员”之类的行。并且上面的 Regex 还抓住了“有执照的房地产”和“数字营销商”。我只想选择只有名称的行,我该怎么做?我可以以某种方式编写正则表达式以不捕捉任何包含“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 []
慕妹3146593
相关分类