基于正则表达式拆分列的模式

时间:2019-10-10 08:54:23

标签: python regex pandas split

我有一个数据框,其中每一行代表一个全名和一个网站。我需要将其分为两列:名称和网站。

我尝试使用pandas str.split,但我正在努力创建一个正则表达式模式,该模式可以捕获任何初始的“ http”以及网站的其余部分。我有以http和https开头的网站。

df = pd.DataFrame([['John Smith http://website.com'],['Alan Delon https://alandelon.com']])

我希望有一种模式可以正确识别网站以拆分我的数据。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

使用str.split

 pd.DataFrame(df[0].str.split('\s(?=http)').tolist()).rename({0:'Name',1:'Website'}, axis=1)

输出

         Name                Website
0  John Smith  http://website.com   
1  Alan Delon  https://alandelon.com

答案 1 :(得分:0)

使用str.extract

例如:

df = pd.DataFrame([['John Smith http://website.com'],['Alan Delon https://alandelon.com']], columns=["data"])
df[["Name", "Url"]] = df["data"].str.extract(r"(.*?)(http.*)")
print(df)

输出:

                               data         Name                    Url
0     John Smith http://website.com  John Smith      http://website.com
1  Alan Delon https://alandelon.com  Alan Delon   https://alandelon.com