Группировать по нескольким столбцам, затем добавить - PullRequest
1 голос
/ 18 февраля 2020

Я пытаюсь подсчитать количество вхождений одного и того же пакета в моем фрейме данных, пакет такой же, если он имеет следующие совпадающие поля:

['SourceIP', 'SourcePort', 'DestinationIP', 'DestinationPort', 'Protocol']

Я хочу создать новый столбец в моем фрейм данных со значениями вхождений и этот столбец будет называться 'PerSe c'

. Я попытался найти решение этой проблемы, найденное здесь Pandas создать новый столбец с количеством от groupby

Однако, когда я запускаю:

df['PerSec'] = df.groupby(['SourceIP', 'SourcePort', 'DestinationIP', 'DestinationPort', 'Protocol']['SourceIP', 'SourcePort', 'DestinationIP', 'DestinationPort', 'Protocol'].transform('PerSec'))
with pd.option_context('display.max_rows', None, 'display.max_columns', None):
    print(df)

Я получаю эту ошибку:

Ошибка типа: индексы списка должны быть целыми числами или слайсами, а не кортежем

Значит ли это, что метод groupby будет работать только с одним столбцом?

Ответы [ 3 ]

0 голосов
/ 18 февраля 2020

Так и должно быть

df['PerSec'] = df.groupby([['SourceIP', 'SourcePort', 'DestinationIP', 'DestinationPort', 'Protocol']])['SourceIP', 'SourcePort', 'DestinationIP', 'DestinationPort', 'Protocol'].transform('PerSec')
0 голосов
/ 18 февраля 2020

Добавьте только один столбец после groupby и передайте groupby некоторую статистическую функцию, например, GroupBy.count:

cols = ['SourceIP', 'SourcePort', 'DestinationIP', 'DestinationPort', 'Protocol']
df['PerSec'] = df.groupby(cols)['SourceIP'].transform('count')
0 голосов
/ 18 февраля 2020

Групповой метод может быть расширен до нескольких столбцов. Он будет группировать в указанном порядке столбцов

, в вашем случае

df.groupby(['SourceIP', 'SourcePort', 'DestinationIP', 'DestinationPort', 'Protocol'])

вернет сгруппированный фрейм данных, в котором, если SourceIP приравнивает его к группам по SourcePort и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...