Python 通过使用pandas中断url来选择信息

Python 通过使用pandas中断url来选择信息,python,pandas,Python,Pandas,我有一个带有以下专栏的主题: 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 in

我有一个带有以下专栏的主题:

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.urlslit,但没有成功。

您可以将
str.extract
与regex
(?p[^/]*)/?(?p[^/]*)/?(?p[^/]*)匹配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
df.url.str.extract('(?P[^/]*)/?(?P[^/]*)/?(?P[^/]*)/?(?P.*))
#主产品页更多信息
#0 www.abc.com
#1 www.abc.com ttt第1页
#2 www.abc.com vvv第4页信息
#3 www.abc.com zzz第4页

使用
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

谢谢我有几个案例只有“www.abc.com/”,在这些行中,我在main专栏收到了NaN。我怎样才能修好它?我将编辑问题以添加此案例。您可以将以下所有组设置为可选组。请参阅更新的正则表达式。