Атрибут indices
Атрибут indices применяется к объекту GroupBy
и возвращает словарь, в котором ключи - это метки групп,
а значения - списки числовых индексов строк,
принадлежащих соответствующим группам.
Этот атрибут удобен для быстрого просмотра того,
какие строки таблицы попали в каждую группу.
Синтаксис
groupby_obj.indices
Пример
Создадим таблицу с данными и сгруппируем её по столбцу 'a':
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby('a')
print(grouped.indices)
Результат выполнения кода:
{1: [0, 1], 2: [2, 3], 3: [4]}
Как видно из результата, в группу с ключом 1
попали строки с индексами 0 и 1,
в группу с ключом 2 - строки с индексами 2 и 3,
а в группу с ключом 3 - строка с индексом 4.
Пример
Группировка по нескольким столбцам создаёт составные ключи групп:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'c': ['x', 'y', 'x', 'y', 'x'],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby(['a', 'c'])
print(grouped.indices)
Результат выполнения кода:
{(1, 'x'): [0], (1, 'y'): [1], (2, 'x'): [2], (2, 'y'): [3], (3, 'x'): [4]}
Теперь ключами словаря являются кортежи, состоящие из значений
столбцов a и c, по которым выполнялась группировка.
Пример
Атрибут indices можно использовать для получения
индексов строк определённой группы:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby('a')
group_indices = grouped.indices[1]
print(group_indices)
print(df.iloc[group_indices])
Результат выполнения кода:
[0, 1]
a b
0 1 10
1 1 20
Сначала мы получили список индексов строк для группы с ключом 1,
а затем с помощью iloc извлекли сами строки.