Подсчет количества раз, когда группа в объекте pandas groupby имеет конкретное значение - PullRequest
0 голосов
/ 27 июня 2018

У меня есть датафрейм панд, который выглядит следующим образом

   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

где у меня есть отдельные столбцы для числа вхождений уровня для каждого имени хоста, но у меня возникают проблемы с поиском чего-либо, что будет делать это. Есть ли эффективный способ сделать это ала. не перебирать весь фрейм данных снова и снова?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы можете использовать unstack:

dft = frame.groupby("hostname").level.value_counts()
dft.unstack(fill_value=0)\
   .add_prefix('level')\
   .add_suffix('_occur')\
   .reset_index()

Выход:

level 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             1             0
0 голосов
/ 27 июня 2018

IIUC

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...