gpt4 book ai didi

python - 有什么方法可以通过解析/拆分 URL 列表来创建 pandas 数据框?

转载 作者:行者123 更新时间:2023-12-01 08:10:10 25 4
gpt4 key购买 nike

我想从 url 列表创建 pandas 数据框,我想按层次结构拆分每个 url 并为其创建新列。更具体地说,我想按域、协议(protocol)、查询、片段、路径分解 url。我认为使用 pandas 是可行的,我学习了这个解决方案,但没有得到预期的解决方案。

示例数据片段

这是 csv file 中的示例数据片段这是我的尝试:

import pandas as pd

df=pd.read_csv('example data snippet.csv')
df['protocol'],df['domain'],df['path'],df['query'],df['fragment'] = zip(*df['url'].map(urlparse.urlsplit))

上述尝试没有成功,因为它的输出不符合我的期望,所以我想知道是否有更好的方法来使用pandas实现这一点。谁能指出我如何进行这项工作?无论如何,要轻松完成这件事吗?有什么想法吗?

所需输出

我想拆分 url 并为每个组件创建新列,我的最终 pandas 数据框的列将如下所示:

df.columns=['id', 'title', 'news source', 'topic', 'news category']

例如,在这个网址中,我可以说:

'variety.com/2017/biz/news/tax-march-donald-trump-protest-1202031487/'
'variety.com/2018/film/news/list-2018-oscar-nominations-1202668757/

news source =['variety.com','variety.com']
topic = ['tax-march-donald-trump-protest','list-2018-oscar-nominations']
new category = ['biz', 'film']

如何对给定的 url 列表进行这种解析并将它们添加到 pandas 数据框中的新列中?无论如何要完成这件事吗?提前致谢

最佳答案

你有多少个?

我想我会一一进行,因为您忽略了随机数量的内容,并且您需要为要忽略的内容编写规则。

如果你使用 url.split("/") 你会得到一个列表,但是你需要删除不需要的内容以保留你想要的内容。

一旦你得到了你想要的东西,它就会有一个很好的形状,你可以将它放入数据框中:

import pandas as pd

urls = ['variety.com/2017/biz/news/tax-march-donald-trump-protest-1202031487/',
'variety.com/2018/film/news/list-2018-oscar-nominations-1202668757/']

cols = ['c1', 'c2', 'c3', 'c4']
make_me = []
for url in urls:
lst = url.split("/")
# your business rules go here
make_me.append([x for x in lst if not x.isdigit() and not x == ""])

df = pd.DataFrame(make_me, columns=cols)
df


c1 c2 c3 c4
0 variety.com biz news tax-march-donald-trump-protest-1202031487
1 variety.com film news list-2018-oscar-nominations-1202668757

然后您可以根据需要引用每一列:

df.c1

>
0 variety.com
1 variety.com
Name: c1, dtype: object

并且仍然将所有内容放在一起并建立索引。我认为规则可能会变得严格,您可能需要使它们特定于域。

关于python - 有什么方法可以通过解析/拆分 URL 列表来创建 pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55309796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com