Выбор информации путем взлома URL с помощью панд - PullRequest
0 голосов
/ 17 мая 2018

У меня есть pandas df со следующим столбцом:

url
www.abc.com/
www.abc.com/ttt/page1
www.abc.com/vvv/page4/info
www.abc.com/zzz/page4

Я хотел бы преобразовать его в 4 столбца, например:

       main  prod    page   more_info 
www.abc.com   NaN     NaN   NaN
www.abc.com   ttt   page1   NaN
www.abc.com   vvv   page4   info
www.abc.com   zzz   page4

Я пробовал pandas.Series.str.split и urlparse.urlsplit, но не удалось.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Используя str.split

s=df.url.str.split('/',expand=True)
s.columns=['main', 'prod','page','more_info']
s
Out[239]: 
          main prod   page more_info
0  www.abc.com  ttt  page1      None
1  www.abc.com  vvv  page4      info
2  www.abc.com  zzz  page4      None
0 голосов
/ 17 мая 2018

Вы можете использовать str.extract с регулярным выражением (?P<main>[^/]*)/?(?P<prod>[^/]*)/?(?P<page>[^/]*)/?(?P<more_info>.*), здесь каждая именованная захваченная группа, т. Е. (?P<main>[^/]*) соответствует части URL-адреса и в результате расширяется до нового столбца:

df.url.str.extract('(?P<main>[^/]*)/?(?P<prod>[^/]*)/?(?P<page>[^/]*)/?(?P<more_info>.*)')

#          main prod   page more_info
#0  www.abc.com
#1  www.abc.com  ttt  page1
#2  www.abc.com  vvv  page4      info
#3  www.abc.com  zzz  page4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...