从pandas列中的URL中删除URL id,以保留不带id的基本URL

时间:2020-09-27 11:38:25

标签: python pandas url

我正在尝试从URL中删除ID,以便可以将其计入报告中。包含ID时,不包含在内的将视为唯一URL。即有1000个而不是10个

所以我想采用这样的网址

https://www.website.co.uk/page/home-page/id93847562

并切断ID,就像这样

https://www.website.co.uk/page/home-page/

URL的长度各不相同,因此我不能从头到尾使用一定数量的字符进行剪切,也不能使用一定数量的反斜杠。

我正在尝试更改熊猫数据框中一列中的URL。

在这里我能找到的最接近答案的是:extract id from the URL using Python

但是我无法将其翻译成我的情况

这是我的代码

df.loc[df['URL'].str.contains('id'),'URL' = 'URL'[:id]

如果URL字符串包含“ id”,我尝试写成',从开始到ID替换为URL。

我得到的错误是:

File "<ipython-input-18-42dc8b2df1ff>", line 3
    df.loc[df['URL'].str.contains('id'),'URL' = 'URL'[:id]
                                              ^
SyntaxError: invalid syntax

有什么想法可以使它起作用吗?

在此先感谢您的帮助和建议

3 个答案:

答案 0 :(得分:2)

您可以使用str.replace

df['url'] = df['url'].str.replace('\/id.*', '/', regex=True)

输出:

                                         url
0  https://www.website.co.uk/page/home-page/

答案 1 :(得分:1)

您可以对可选参数rsplit使用n=1来限制拆分次数:

df['URL'] = df['URL'].str.rsplit('/', n=1).str[0]

0    https://www.website.co.uk/page/home-page
Name: URL, dtype: object

答案 2 :(得分:1)

ID是否始终在正斜杠之后并在字符串末尾?以下代码对我有用(在这些假设下)。我还添加了一个限制,即“ id”后必须有2到10位数字,但是您当然可以对其进行编辑以适合您的用例。祝好运! :)

import re
import pandas as pd

df = pd.DataFrame({"url": ["https://www.website.co.uk/page/home-page/id93847562"]})
df["url"] = df["url"].map(lambda x: re.sub(r"/id[0-9]{2,10}$", "/", x))
df
相关问题