Объединение по нескольким столбцам в GroupBy Pandas DataFrame - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь найти краткий способ агрегирования по нескольким столбцам в Pandas DataFrame.

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

Входные данные

|    |   id | class_name   |   predicted |   truth |
|---:|-----:|:-------------|------------:|--------:|
|  0 |    0 | dog          |           0 |       1 |
|  1 |    1 | cat          |           0 |       0 |
|  2 |    2 | dog          |           0 |       1 |
|  3 |    3 | dog          |           1 |       1 |
|  4 |    4 | cat          |           1 |       0 |

Ожидаемый результат

| class_name   |   accuracy |      std |
|:-------------|-----------:|---------:|
| cat          |   0.5      | 0.707107 |
| dog          |   0.333333 | 0.57735  |

Я уже могу сделать это довольно просто, объявив промежуточный столбец is_correct, а затем использовать агрегацию

df["is_correct"] = df.predicted == df.truth
df.groupby("class_name").agg(accuracy=("is_correct", np.mean), std=("is_correct", np.std))

Я хотел бы решить эту проблему без предварительного объявления этого дополнительного столбца, но я не могу найти способ «агрегировать по нескольким столбцам».

...