!!目的是将工作方法应用于Pandas Dataframe !!中的文本。
鉴于我有以下句子:
“他邀请了2个人并养了3只狗。”
“她邀请了3个朋友和宠物1只猫。”
对于每个句子,我想在变量中计算邀请了多少人以及有多少宠物是宠物。这可以通过正则表达式轻松实现:
sentence = 'He invited 2 people and pet 3 dogs.'
human = [r'(\d+) people', r'(\d+) friend']
for h in human:
number = re.search(h, sentence, re.IGNORECASE)
if number is not None:
number = number.group(1)
print('humans invited: ',number)
现在,句子位于“句子”列中的Pandas Dataframe中。 Dataframe还有一个名为“human”的列和一个名为“pets”的列。我现在想要采用第一句话,如上所示处理它,将人类的结果写入“人类”栏目,对宠物做同样的事情并将其写入栏目宠物。但是,我不确定如何逐行将其应用于Pandas Dataframe。
答案 0 :(得分:2)
使用pandas,您可以使用str.extract
,例如:
df['humans'] = df['sentence'].str.extract('(\d+) (?:people|friend)', re.IGNORECASE, expand=False)
和宠物一样
答案 1 :(得分:2)
如果句子中只有2个数字,并且您始终希望humans
在pets
之前出现,那么您可以立即获得所有数字:
df[['humans', 'pets']] = df.sentence.str.extract('(\d+).*?(\d+)', expand=True)
df
现在是:
sentence humans pets
0 He invited 2 people and pet 3 dogs. 2 3
1 She invited 3 friends and pet 1 cat. 3 1
2 She invited 13 friends and pet 145 frogs. 13 145
3 She invited 11243 friends and pet 141415 frogs. 11243 141415