从 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>
所以解决方案是两个命令:
- 获取索引
2
处的元组 urlparse
结果
- 要将 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']}
我确信这个问题的答案很简单 - 我只是出于某种原因做不到。
我想在不使用 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>
所以解决方案是两个命令:
- 获取索引
2
处的元组urlparse
结果 - 要将 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']}