Как из сложной структуры словарей и списков получить DataFrame?
Есть сложный список словарей со следующей структурой:
test_list = [{'Супермаркет': ['Адрес1', 'Адрес2', 'Адрес_n'],
'Гипермаркет': ['Адрес 1', 'Адрес2', 'Адрес_n']},
{'Супермаркет': ['Адрес3', 'Адрес4', 'Адрес_n+1'],
'Гипермаркет': ['Адрес 3', 'Адрес4', 'Адрес_n+1']}]
В итоге получается вот такой список словарей:
for el in test_list:
**el(keys()):**
dict_keys(['Супермаркет', 'Гипермаркет'])
dict_keys(['Супермаркет', 'Гипермаркет'])
dict_keys(['Супермаркет'])
dict_keys(['Супермаркет'])
dict_keys(['Супермаркет'])
dict_keys(['Супермаркет', 'Гипермаркет'])
**el(values()):**
dict_values([['адрес', 'адрес'], ['адрес']])
dict_values([['адрес'], ['адрес']])
dict_values([['адрес']])
dict_values([['адрес']])
dict_values([['адрес']])
dict_values([['адрес', 'адрес'], ['адрес']]])
Пришлось сделать такую структуру, потому что исследуемая сеть находится по всей стране и имеет несколько форматов, а парсер перебирает id каждого региона и в каждом регионе получается словарь с ключом-форматом: и значением [список адресов].
Значения получил, но теперь не могу понять, как всё это преобразовать в читабельный DataFrame со следующими колонками: 'Формат', 'Адрес'.
Более-менее получилось формат вывести в колонки. Но это не то, что нужно! Нужно получить формат именно в каждой строке для каждого адреса.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
df = pd.DataFrame([[k,el] for d in test_list for k,v in d.items() for el in v],
columns=["Type", "Address"])
результат:
In [405]: df
Out[405]:
Type Address
0 Супермаркет Адрес1
1 Супермаркет Адрес2
2 Супермаркет Адрес_n
3 Гипермаркет Адрес 1
4 Гипермаркет Адрес2
5 Гипермаркет Адрес_n
6 Супермаркет Адрес3
7 Супермаркет Адрес4
8 Супермаркет Адрес_n+1
9 Гипермаркет Адрес 3
10 Гипермаркет Адрес4
11 Гипермаркет Адрес_n+1