Применение предложений for для каждой строки в DataFrame pandas - PullRequest
2 голосов
/ 24 марта 2020

* Я повторно опубликовал этот вопрос, поскольку пропустил важную часть в моих предыдущих вопросах.

У меня есть DataFrame, как показано ниже

Email-adress                                  Body
  abcd@gmail           Hi, I am xxxx. ======= ABCD corporation Chris =======
 asdff@gmail           Thank you for the information. Bruh bruh. ------CDDD inc  name-----

И из этого столбца Body в DF, Я хотел бы удалить все подписи, чтобы вывод был таким, как показано ниже

output
    Email-adress                                  Body
      abcd@gmail           Hi, I am xxxx. 
     asdff@gmail           Thank you for the information. Bruh bruh. 

Я получил пример кода, подобного приведенному ниже

stri=stri.split()
for i in range(len(stri)):
    if ('====' in stri[i]) or ('----' in stri[i]):
        stri=stri[:i]
        break

print(' '.join(stri))

Но это, поставив "stri" = текст в теле, и этот метод применяется только в одну строку. Но я хотел бы знать, как применить это в каждой из строк, чтобы я мог избавиться от всех сигнатур из каждой строки.

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Использование регулярного выражения:

def remove_sign(row):
    return re.sub(r"=.*=|-.*-", "", row)

df['Body'] = df['Body'].apply(remove_sign)

df:

    Email-adress    Body
0   abcd@gmail      Hi, I am xxxx.
1   asdff@gmail     Thank you for the information. Bruh bruh.
0 голосов
/ 24 марта 2020

Попробуйте:

#searches for alpha numeric characters, space, comma and period 
df.Body.str.extract(r'([\w,.\s]+)')

     0
0   Hi, I am xxxx.
1   Thank you for the information. Bruh bruh.

ИЛИ:

 #look for characters that start before = or -
 #the ? after the + sign gets the least amount ... non-greedy mode

 df['Body'] = df.Body.str.extract(r'(.+?(?=[=-]))')

    Email-adress    Body
0   abcd@gmail      Hi, I am xxxx.
1   asdff@gmail     Thank you for the information. Bruh bruh.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...