我一直在到处搜索,但尚未找到任何解决方案...因此,例如,我在数据框中有一个名称列表,例如: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 Info0 Penelope Deans1 1/1/20202 Digital Marketer at XXX3 Corinne M. Percell4 1/1/20205 Tereasa T.6 Licensed Real Estate at YYYname_pat = r"^[A-Z][a-z]+,?\s+(?:[A-Z][a-z]*\.?\s*)?[A-Z][a-z]+"df['Info'].str.findall(name_pat)输出是 Info0 Penelope Deans1 []2 Digital Marketer3 Corinne M. Percell4 []5 Tereasa T.6 Licensed Real Estate我期望是: Info0 Penelope Deans1 []2 []3 Corinne M. Percell4 []5 Tereasa T.6 [] 最佳答案 关键是要决定由什么决定一个值是一个名称,什么不是。在您的示例中,似乎'Penelope Deans','Corinne M. Percell'和'Tereasa T.'是名称,而'1/1/2020'不是(因为它有数字和斜杠),而'Digital Marketer at XXX'也不是因为它遵循模式。请注意,根据这些规则,<namelike> at <namelike>也不会是名称。但是由于“ at”不是英语中的普通名词,因此它应该可以工作,并且您并不想专门涵盖外国名称(即使那样,“ at”在名称中也很少见)。使用正则表达式的Python解决方案:import pandas as pdlst = [ '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 = df[df[0].str.match('^((?! at )[A-z\s\.])+$')]print(df)结果: 00 Penelope Deans3 Corinne M. Percell5 Tereasa T. 07-26 02:56