首页 > 解决方案 > 查找数据框中每一列的平均值,按列分组,排除一个值

问题描述

我有一个如下所示的数据框:

    CPU Memory Disk  Label
0    21     28   29      0
1    46     53   55      1
2    48     45   49      2
3    48     52   50      3
4    51     54   55      4
5    45     50   56      5
6    50     83   44     -1 

我想要的是grouby找到每个标签的平均值。到目前为止,我有这个 dataset.groupby('Label')['CPU', 'Memory', 'Disk'].mean()工作得很好并得到如下结果:

Label           CPU     Memory       Disk 
    -1     46.441176  53.882353  54.176471
     0     48.500000  58.500000  60.750000
     1     45.000000  51.000000  60.000000
     2     54.000000  49.000000  56.000000
     3     55.000000  71.500000  67.500000
     4     53.000000  70.000000  71.000000
     5     21.333333  30.000000  30.666667

我唯一还没有找到的是如何排除所有标记为-1. 有没有办法做到这一点?

标签: pythonpython-3.xpandasdataframepandas-groupby

解决方案


您可以在分组之前过滤数据框:

# Exclude rows with Label=-1
dataset = dataset.loc[dataset['Label'] != -1]

# Group by on filtered result
dataset.groupby('Label')['CPU', 'Memory', 'Disk'].mean()

推荐阅读