Python 有没有办法通过解析/拆分URL列表来创建数据框架?
我想从url列表中创建一个dataframe,在这个列表中,我想按层次结构拆分每个url,并为其创建新的列。更具体地说,我想按域、协议、查询、片段和路径来划分url。我认为使用熊猫是可行的,我学会了这个解决方案,但没有得到预期的解决方案 示例数据片段 以下是中的示例数据片段,以下是我的尝试:Python 有没有办法通过解析/拆分URL列表来创建数据框架?,python,pandas,Python,Pandas,我想从url列表中创建一个dataframe,在这个列表中,我想按层次结构拆分每个url,并为其创建新的列。更具体地说,我想按域、协议、查询、片段和路径来划分url。我认为使用熊猫是可行的,我学会了这个解决方案,但没有得到预期的解决方案 示例数据片段 以下是中的示例数据片段,以下是我的尝试: import pandas as pd df=pd.read_csv('example data snippet.csv') df['protocol'],df['domain'],df['path'],
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))
上面的尝试没有成功,因为它的输出不符合我的期望,所以我想知道有没有更好的方法来实现这一点。有人能告诉我怎么做吗?无论如何,要轻松完成这件事?有什么想法吗
所需输出
我想拆分url并为每个组件创建新列,最终数据框的列如下所示:
df.columns=['id', 'title', 'news source', 'topic', 'news category']
例如,在这个url中,我可以说:
'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列表进行这种解析,并将它们添加到dataframe的新列中?不管怎样,要完成这件事?提前谢谢你有多少
我想我会一个接一个的,因为你忽略了随机数量的东西,你需要为忽略的东西写规则
如果您使用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
并且仍然把它们放在一起并编入索引。我认为这些规则可能会变得很严格,您可能需要将其特定于特定领域。感谢您的解决方案。如何将
c4
列作为纳税三月唐纳德·特朗普抗议
而不是tax-march-donald-trump-抗议-1202031487
进行位修改?再次感谢您,将其拆分为“-”并去掉最后一个,但这可能只适用于多样化。谢谢,只为c4
保留文本是否可行?你能告诉我怎么做吗?看看字符串函数iSigIDER(),我尝试这样:<代码>我在DF.C4: LS= I.分裂(“--”)RES.Apple(['```.x.x),如果不是x.ISDigId())。但是,中间的数字也不见了,我只想去掉文本尾上的数字。还有更好的主意吗?非常感谢。