将re应用于datfram

2024-10-02 00:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

!!目的是将工作方法应用于数据帧中的文本!!你知道吗

鉴于我有如下句子:

“他邀请了两个人和三只宠物狗。”

“她邀请了三个朋友和一只宠物猫。”

对于每一句话,我想在一个变量中计算有多少人被邀请,有多少宠物是宠物。这通过regex很容易实现:

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)

现在句子在“句子”列的数据框中。Dataframe还有一个名为“humans”的列和一个名为“pets”的列。我现在想用第一句话,像上面那样处理,把结果写进“人类”栏,对宠物做同样的处理,然后写进“宠物”栏。但是,我不知道如何将它逐行应用于数据帧。你知道吗


Tags: 数据方法文本目的re宠物number朋友
2条回答

如果句子中只有2个数字,而你总是期望humanspets之前出现,你可以一次得到所有的数字:

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

对于熊猫,您可以使用str.extract,例如:

df['humans'] = df['sentence'].str.extract('(\d+) (?:people|friend)', re.IGNORECASE, expand=False)

宠物也一样

相关问题 更多 >

    热门问题