Применение re к Pandas Dataframe - PullRequest
0 голосов
/ 13 июня 2018

!!Цель состоит в том, чтобы применить рабочий метод к тексту в пандусе 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 в столбце «предложение».Датафрейм также имеет столбец под названием «люди» и столбец «домашние животные».Теперь я хочу взять первое предложение, обработать его, как показано выше, записать результат для людей в столбец «люди», сделать то же самое для домашних животных и записать его в столбец «домашние животные».Тем не менее, я не уверен, как применить это к Pandas Dataframe строка за строкой.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Если в предложениях только 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
0 голосов
/ 13 июня 2018

С пандами вы можете использовать str.extract, например:

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

и то же самое для домашних животных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...