У меня есть файл текстовых данных, состоящий из идентификаторов и URL-адресов. Затем я хотел бы проанализировать URL-адреса в словарях Python, а затем преобразовать в data-рамки pandas, чтобы я мог анализировать определенные элементы URL.Python parsing url в dict: duplicate keys
Проблема в том, что некоторые элементы являются дубликатами. Например, URL-адрес может читать /browse/?item_type=15&color=336&color=45
. Примечание: color=
отображается дважды. Затем, если я использую urllib.parse.parse_qs для синтаксического анализа url, результирующий словарь будет содержать пару ключевых значений «color» - ['336', '45'], а значение - список. Как следствие, генерируется ошибка при попытке конкатенации разобранных линий в существующем dataframe ВГД элементов:
ValueError: arrays must all be same length
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])
Моего вопрос: как я могу обойти эту проблему? На данный момент я готов принять только один цвет в свой фреймворк, если есть два цвета - случаи, когда URL-адрес содержит два цвета.
Вместо прохождения Dict возвращенного 'parse_qs' непосредственно' DataFrame.from_dict' просто маленький шаг предварительной обработки для поиска ключей, которые имеют значение списка и заменить их , скажем, первое значение в списке. Или какая-то другая схема, если вы хотите сохранить несколько цветов. – Iguananaut
Вы также можете преобразовывать списки в кортежи, например. 'Кортеж ([ '336', '45'])'. –