#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}