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。我怎样才能修好它?我将编辑问题以添加此案例。您可以将以下所有组设置为可选组。请参阅更新的正则表达式。