Панды объединяют последние 2 элемента, разделенных комой, в ячейке, используя tldextract - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть фрейм данных pandas, и я использую библиотеку tldextract.У меня проблемы с созданием нового столбца и соединением второй и третьей разделенных строк.

#First 5 rows for testing purposes
df = pd.DataFrame(request['destinationhostname'].iloc[0:5])

    destinationhostname
0   pod51042psh.outlook.com
1   s.mrmserve.com
2   client-office365-tas.msedge.net
3   otf.msn.com
4   log.pinterest.com

#Applying tld extract on destinationhostname column
df['req'] = request.destinationhostname.apply(tldextract.extract)

    destinationhostname              req
0   pod51042psh.outlook.com         (pod51042psh, outlook, com)
1   s.mrmserve.com                  (s, mrmserve, com)
2   client-office365-tas.msedge.net (client-office365-tas, msedge, net)
3   otf.msn.com                     (otf, msn, com)
4   log.pinterest.com               (log, pinterest, com)

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

df['fld'] = df['req'].apply('.'.join[1:3])

TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'

Или

TypeError: sequence item 0: expected string, ExtractResult found

Мой желаемый результат будет:

    destinationhostname             req                                  fld
0   pod51042psh.outlook.com         (pod51042psh, outlook, com)          outlook.com
1   s.mrmserve.com                  (s, mrmserve, com)                   mrmserve.com
2   client-office365-tas.msedge.net (client-office365-tas, msedge, net)  msedge.net
3   otf.msn.com                     (otf, msn, com)                      msn.com
4   log.pinterest.com               (log, pinterest, com)                pinterest.com

1 Ответ

0 голосов
/ 11 декабря 2018

Нарезать объект str, затем join

df['fld'] = df.req.str[1:].str.join('.')

df

               destinationhostname                                  req            fld
0          pod51042psh.outlook.com          (pod51042psh, outlook, com)    outlook.com
1                   s.mrmserve.com                   (s, mrmserve, com)   mrmserve.com
2  client-office365-tas.msedge.net  (client-office365-tas, msedge, net)     msedge.net
3                      otf.msn.com                      (otf, msn, com)        msn.com
4                log.pinterest.com                (log, pinterest, com)  pinterest.com

Или, как показывает @ coldspeed , вы можете нарезать с ссылкой на конец массива.

df['fld'] = df.req.str[-2:].str.join('.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...