Если значение из словаря находится в фрейме данных, возвращает конкретный соответствующий ключ

#python #pandas #dictionary

#питон #pandas #словарь

Вопрос:

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

Например:

 Input:
    dict = {'Happy': [1, 2], 'Sad': [3, 4, 5]}
    
    people = {'Name': ['John','Tom','Helen'],'Status': [3,2,5]}
    df = pd.DataFrame(people, columns = ['Name', 'Status'])


Expected Output:
output_dict = {'John': 'Happy', 'Tom': 'Happy', 'Helen': 'Sad'}
 

Вот что я пробовал до сих пор:

     for key, value in dict.items():
        for val in value:
            for row in df.itertuples():
                if row.status == val:
                    return {df['Name']:key}
 

Однако по какой-то причине мой dict в конце всегда возвращается как пустой.

Ответ №1:

Давайте попробуем изменить ваш dict , затем с replace помощью или map

 out = df.set_index('Name').Status.replace({z : x for x , y in d.items() for z in y } ).to_dict()
{'John': 'Sad', 'Tom': 'Happy', 'Helen': 'Sad'}
 

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

1. Спасибо, БЕНИ. В качестве быстрого продолжения, как бы я справился с ситуацией, когда dict имеет не число, т.е.: dict = {‘Happy’: [1, 2], ‘Sad’: [3, 4, 5], ‘ Неуверенный’:[‘_’]}