Skip to main content
 首页 » 编程设计

python之计算 pandas groupby 对象中某个组具有特定值的次数

2025年05月04日10jyk

我有一个看起来像这样的 pandas 数据框

   hostname    level 
0  host1         1 
1  host2         2 
2  host3         3 
3  host1         3 
4  host1         4 
5  host2         2 
... 

当我按主机名对这个数据框进行分组并使用以下方法获取严重性列的值计数时

>>>frame.groupby("hostname").level.value_counts() 

我明白了

hostname  level 
host1       1      1 
            3      1 
            4      1 
host2       2      2 
host3       3      1 
... 

其中第三列是该特定主机名的该级别的出现次数。我想根据这些数据创建一个如下所示的数据框

  hostname    level1_occur    level2_occur    level3_occur    level4_occur 
0  host1           1               0              1              1 
1  host2           0               2              0              0 
2  host3           0               0              0              1 

其中每个主机名的级别出现次数都有单独的列,但我找不到任何可以做到这一点的东西。有没有一种有效的方法可以做到这一点。不是一遍又一遍地遍历整个数据帧?

请您参考如下方法:

国际联合会

pd.crosstab(df.hostname,df.level) 
Out[360]:  
level     1  2  3  4 
hostname             
host1     1  0  1  1 
host2     0  2  0  0 
host3     0  0  1  0