Извлечение доменных имен из нескольких адресов электронной почты в фрейме данных - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь извлечь несколько доменных имен из следующего фрейма данных:

    email
0   test1@gmail1.com; test1@gmail2.com
1   test3@gmail3.com; test4@gmail4.com
2   test5@gmail5.com

Я могу разделить и извлечь первый адрес электронной почты, используя следующий код:

orig = []
mylist = []
for i in df['email']:
    orig.append(i)
    i = i[ i.find("@") : ]
    i = i.split(";")
    i = ';'.join(i)
    mylist.append(i)

После добавления списков во фрейм данных я получаю следующий результат:

    origemail                           newemail
0   test1@gmail1.com; test1@gmail2.com  @gmail1.com; test1@gmail2.com
1   test3@gmail3.com; test4@gmail4.com  @gmail3.com; test4@gmail4.com
2   test5@gmail5.com  @gmail5.com

Результат, который я получаю после: (эти адреса электронной почты не могут быть ограничены двумя, это может быть больше.)

    origemail                           newemail
0   test1@gmail1.com; test1@gmail2.com  @gmail1.com; @gmail2.com
1   test3@gmail3.com; test4@gmail4.com  @gmail3.com; @gmail4.com
2   test5@gmail5.com                    @gmail5.com

Может кто-нибудь указать мне правильное направление для достижения желаемого результата? Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Примерно так должно работать:

orig = []
mylist = []
for i in df['email']:
    orig.append(i)
    emails = i.strip().split(';')
    domains = [x[x.find('@'):] for x in emails]
    if len(domains) == 1:
        domain_string = domains
    else:
        domain_string = '; '.join(domains)
    mylist.append(domain_string)

Он (1) просматривает все электронные письма, (2) сначала добавляет их к orig, (3) находит домены, затем (4) объединяет их и добавляет к mylist.

0 голосов
/ 20 июня 2019

Цикл for вашего кода должен быть реорганизован следующим образом:

  1. добавить текущий элемент в исходный список
  2. разделить все электронные письма точкой с запятой ';'
  3. обрезать пробелы для каждого письма
  4. найти знак '@' и извлечь подстроку домена
  5. присоединить все домены с помощью ';'
  6. appendрезультат для mylist

Надеюсь, этот seudocode может помочь.

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