从 DataFrame 中的 URL 中提取路径

Extracting Path from URLs in DataFrame

我确信这个问题的答案很简单 - 我只是出于某种原因做不到。

我想在不使用 for 循环的情况下从 URL 的 DataFrame 中提取 URL 路径 - 因为我将 运行 这针对 1M+ 行和循环太慢了。

from urllib.parse import urlparse
d = {'urls': ['https://www.example.com/ex/1','https://www.example.com/1/ex']}
df = pd.DataFrame(data=d)
df
df['urls'].apply(urlparse)

上面是我所在的位置,其中 returns 由 urllib

返回的 URL 所有部分的对象

所需的最终结果是如下所示的 DataFrame:

d = {'urls': ['https://www.example.com/ex/1','https://www.example.com/1/ex'], 'url_path': ['/ex/1', '/1/ex']}

如果有人知道如何解决这个问题 - 我将不胜感激!

谢谢!

urlparse 的文档字符串清楚地表明它的结果是一个具有以下字段的命名 6 元组: <scheme>://<netloc>/<path>;<params>?<query>#<fragment>

所以解决方案是两个命令:

  1. 获取索引 2 处的元组 urlparse 结果
  2. 要将 df 转换为您想要的格式,请将 orient='list' arg 传递给 to_dict DataFrame 方法
df['paths'] = df['urls'].apply(lambda x: urlparse(x)[2])
df.to_dict(orient='list')

结果

{'urls': ['https://www.example.com/ex/1', 'https://www.example.com/1/ex'],
 'paths': ['/ex/1', '/1/ex']}