Как сгруппировать Pandas строк и представить вывод в виде словаря в Python? - PullRequest
0 голосов
/ 02 августа 2020

Я хотел бы, чтобы для каждой категории / цвета глаз были все связанные имена.

Вот мой фрейм данных (df):

      eye color           first name 
0     blue                Jules
1     blue                Lucie
2     green               Thomas
3     green               Vincent
4     green               David
5     brown               Maxime

Это результат, который я хотел бы иметь:

{'blue': ['Jules', 'Lucie'], 'green': ['Thomas', 'Vincent', 'David'], 'brown': ['Maxime']

Это мой код:

list_name=list()

for i in range(len(df)-1):
    
    current_color=df['eye color'][i]
    
    next_color=df['eye color'][i+1] 
    
    name=df['first name'][i]
    
    if current_color!=next_color : 

        compte_nb_systeme=compte_nb_systeme+1        
        print('we change eye color')
    else :
        print('we don't change the color of the eye')
        list_name.append(name)
        
   dico= {current_color :list_name}            
print(dico) 

проблема в том, что я добавляю все имена, содержащиеся в столбце «имя», и это для каждого цвета глаз.

1 Ответ

0 голосов
/ 02 августа 2020

Этот код выполняет итерацию по всем строкам df и добавляет first name к записи dict eye color. Для первого появления цвета (color not in output) должна быть создана запись в dict, она инициализируется пустым списком (output[color] = []).

output = {}

for i in range(len(df)):

    color = df['eye color'][i]
    first_name = df['first name'][i]

    if color not in output:
        output[color] = []
    output[color].append(first_name)
    
print(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...