Создайте словарь, используя цикл for и функцию

#python-3.x #pandas #function #dictionary #for-loop

#python-3.x #панды #функция #словарь #для-петли

Вопрос:

У меня есть массив с почтовыми кодами, и я хочу создать словарь с почтовыми кодами и результатом функции, связанной с ними. (В основном цикл переходит к фрейму данных и смотрит, сколько разных «областей совета» существует для каждого почтового индекса).

Это цикл for, который я пробовал:

 for cps in codigos_postales: codigo_postal_council = {}  codigo_postal_council[cps] = pd.notna(pd.unique(data[data['Postcode']==cps]['CouncilArea'])).sum()  

Проблема в том, что на выходе я не получаю полный словарь с почтовыми кодами и результатами. Я получаю только последний элемент массива и результат функции в качестве вывода.

 {3793.0: 0}  

Я знаю, что функция, которую я закодировал, работает правильно, потому что, если я включу этот код в цикл, я получу длинную распечатку результатов.

 print(pd.notna(pd.unique(data[data['Postcode']==cps]['CouncilArea'])).sum())  

Я искал в Интернете около часа и все еще не нашел решения. Большое вам спасибо за вашу добрую поддержку!!!

Комментарии:

1. for cps in codigos_postales: data[data['Postcode']==cps]['CouncilArea'] было бы намного быстрее с каким-нибудь groupby .

2. Спасибо, разберусь в этом ! 🙂

Ответ №1:

Подробнее внешний цикл создания диктанта

 codigo_postal_council = {}  for cps in codigos_postales:  codigo_postal_council[cps] = pd.notna(pd.unique(data[data['Postcode']==cps]['CouncilArea'])).sum()  

Комментарии:

1. Вот и все, теперь он работает правильно!! Большое вам спасибо за ваш ответ 🙂