我有一个由id和url组成的原始文本数据文件。然后我想将URL解析为Python字典,然后转换为pandas数据帧,以便我可以分析某些url元素。
问题是某些元素是重复的。例如,网址可能会显示/browse/?item_type=15&color=336&color=45
。注意color=
出现两次。然后,如果我使用urllib.parse.parse_qs来解析url,结果字典将包含键值对' color' - [' 336',' 45'],该值为列表。因此,当我尝试将解析的行连接到url元素的现有数据帧时,会抛出错误:
ValueError:数组必须全长相同
new_df = DataFrame.from_dict(urllib.parse.parse_qs(df1['url'][1]), orient='columns', dtype=None)
new_df['id'] = df1['id'][1]
for i in range(2,35):
add_df = DataFrame.from_dict(urllib.parse.parse_qs(df1['url'][i]), orient='columns', dtype=None)
add_df['id'] = df1['id'][i]
new_df = pd.concat([new_df, add_df])
我的问题是:如何绕过这个问题?此时,如果有两种颜色,我愿意只接受一种颜色到我的数据框中 - 网址包含两种颜色的情况很少。
答案 0 :(得分:1)
{k: [v[0]] for k, v in parse_qs('item_type=15&color=336&color=45').items()}
这将消除任何重复