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

标签 python pandas dataframe

我有一个看起来像这样的 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

关于python - 计算 pandas groupby 对象中某个组具有特定值的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51069102/

相关文章:

python - Azure数据工厂管道: Creating pipelines with Python: Authentication (via az cli)

python - Python函数中的默认参数在哪里

重命名多个数据框中的列,R

python - 填补 MultiIndex Pandas Dataframe 中的日期空白

python - 命令提示符中的“等待”动画 (Python)

python - 调整 ctypes 数组的大小

python - 根据 Pandas 中的列名删除多个列

python - 如果数据框A列中的值为空,则将B列中的值写入A列

python - 展开嵌套数据(json、Pandas)

python - (Python,数据帧): Record the average of all numbers in a column that are smaller than the n'th percentile