Как создать словарь для определенной строки в pandas?

#python #pandas

Вопрос:

У меня есть следующий столбец, содержащий идентификаторы субъектов, и я хотел бы сопоставить его со столбцом оценки справа от него, взяв сумму баллов этого идентификатора и поместив ее в словарь с идентификатором и оценкой в качестве ключа/значения. Вот две колонки:

 subject   Score
phchp005  1
phchp005  0
phchp006
phchp006
phchp006  0 
phchp006  0
phchp006  0
phchp006  0 
phchp006  1
phchp006  1
phchp006  1
phchp008 
 

Таким образом, результатом будет такой словарь, как этот:

 {phchp005: 1, phchp006: 3, phchp008: 0}
 

Есть также значения NaN, которые я просто заполню 0.
Спасибо.

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

1. Я предполагаю, что phchp006 это должно быть 3? Также это пустые строки или NAN в столбце Оценка?

Ответ №1:

Попробуйте через groupby() :

 out=df.groupby('subject')['Score'].sum().astype(int).to_dict()
 

выход из out :

 {'phchp005': 1, 'phchp006': 3, 'phchp008': 0}
 

Ответ №2:

Создайте тестовые данные фрейма данных:

 df = pd.DataFrame(
    {
        "subject": 2 * ["phchp005"]   9 * ["phchp006"]   1 * ["phchp008"],
        "Score": [1]   7 * [0]   3 * [1]   [0],
    }
)
 

Используйте Groupby:

 df.groupby("subject").sum().to_dict()["Score"]
 

Выход:

 {'phchp005': 1, 'phchp006': 3, 'phchp008': 0}