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