汇总Pandas DataFrame的GroupBy中的多列

时间:2020-02-19 11:03:18

标签: pandas dataframe pandas-groupby

我正在尝试找到一种简洁的方法来汇总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))

我想解决这个问题而不必先声明这个额外的列,但是我想不出一种“聚合多个列”的方法。

0 个答案:

没有答案