Python 如何构建熊猫姓名检测器

Python 如何构建熊猫姓名检测器,python,regex,pandas,dataframe,Python,Regex,Pandas,Dataframe,这是我的数据集 Id. Text 1 Dear Mr. Alpha Terra, your food is delivered 2 Dear Mrs. Betta Irina Viruva, your drink is delivered 我想要的是检测Mr、或Mrs、之后但、之前的单词。所以,我可以得到名字,这就是我想要的 Id. Text Name 1

这是我的数据集

Id.   Text
1     Dear Mr. Alpha Terra, your food is delivered
2     Dear Mrs. Betta Irina Viruva, your drink is delivered
我想要的是检测
Mr、
Mrs、
之后但
之前的单词。所以,我可以得到名字,这就是我想要的

Id.   Text                                                       Name
1     Dear Mr. Alpha Terra, your food is delivered               Alpha Terra 
2     Dear Mrs. Betta Irina Viruva, your drink is delivered      Betta Irina Viruva
试试这个:

In [134]: df.Text.str.split('.',expand=True)[1].str.split(',',expand=True)[0]
Out[134]: 
0            Alpha Terra
1     Betta Irina Viruva
Name: 0, dtype: object
import pandas
data = [{'ID': 1, 'Text': 'Dear Mr. Alpha Terra, your food is delivered'},
        {'ID': 2, 'Text': 'Dear Mrs. Betta Irina Viruva, your drink is delivered'}]
df = pandas.DataFrame(data)
df['Name'] = df.Text.str.extract(r'\.(.*?),')
print(df)
试试这个:

In [134]: df.Text.str.split('.',expand=True)[1].str.split(',',expand=True)[0]
Out[134]: 
0            Alpha Terra
1     Betta Irina Viruva
Name: 0, dtype: object
import pandas
data = [{'ID': 1, 'Text': 'Dear Mr. Alpha Terra, your food is delivered'},
        {'ID': 2, 'Text': 'Dear Mrs. Betta Irina Viruva, your drink is delivered'}]
df = pandas.DataFrame(data)
df['Name'] = df.Text.str.extract(r'\.(.*?),')
print(df)

一种选择是使用以下模式进行匹配:

.*Mrs?\.\s+([^,]+).*
这将捕获
Mr.
Mrs.
之后的所有逗号,包括但不包括以下第一个逗号

line = "Dear Mrs. Betta Irina Viruva, your drink is delivered"
matches = re.match(r'.*Mrs?\.\s+([^,]+).*', line, re.M|re.I)

if matches:
    print "Name: ", matches.group(1)
else:
    print "No match!!"

一个选项是使用以下模式进行匹配:

.*Mrs?\.\s+([^,]+).*
这将捕获
Mr.
Mrs.
之后的所有逗号,包括但不包括以下第一个逗号

line = "Dear Mrs. Betta Irina Viruva, your drink is delivered"
matches = re.match(r'.*Mrs?\.\s+([^,]+).*', line, re.M|re.I)

if matches:
    print "Name: ", matches.group(1)
else:
    print "No match!!"
使用:

使用:


当您要求使用正则表达式时,请尝试以下操作:

import pandas
data = [{'ID': 1, 'Text': 'Dear Mr. Alpha Terra, your food is delivered'},
        {'ID': 2, 'Text': 'Dear Mrs. Betta Irina Viruva, your drink is delivered'}]
df = pandas.DataFrame(data)
df['Name'] = df.Text.str.extract(r'\.(.*?),')
print(df)

下面是一个供您尝试的方法。

当您要求使用正则表达式时,请尝试以下方法:

import pandas
data = [{'ID': 1, 'Text': 'Dear Mr. Alpha Terra, your food is delivered'},
        {'ID': 2, 'Text': 'Dear Mrs. Betta Irina Viruva, your drink is delivered'}]
df = pandas.DataFrame(data)
df['Name'] = df.Text.str.extract(r'\.(.*?),')
print(df)

以下是一个供您尝试的示例。

提及您尝试过的内容可能会有所帮助。我正在将
str.extractall
与or类别一起使用,但没有结束提及您尝试过的内容可能会有所帮助。我正在将
str.extractall
与or类别一起使用,但它并没有结束。我向你的正则表达式鞠躬。我向你的正则表达式鞠躬。至少对于给定的样本数据,这是有效的,但如果输入的点出现在其他上下文中,它将失败。这是有效的,至少对于给定的样本数据,但如果输入的点出现在其他上下文中,它将失败。