我正在尝试找到一种简洁的方法来汇总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))
我想解决这个问题而不必先声明这个额外的列,但是我想不出一种“聚合多个列”的方法。