我有一个数据框,其中每一行代表一个全名和一个网站。我需要将其分为两列:名称和网站。
我尝试使用pandas str.split,但我正在努力创建一个正则表达式模式,该模式可以捕获任何初始的“ http”以及网站的其余部分。我有以http和https开头的网站。
df = pd.DataFrame([['John Smith http://website.com'],['Alan Delon https://alandelon.com']])
我希望有一种模式可以正确识别网站以拆分我的数据。任何帮助将不胜感激。
答案 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