Фильтрация объектов Pandas groupby
у меня есть фрейм данных pandas
df.columns
Index([u’car_id’,u’color’,u’make’,u’year’)]
Я хотел бы создать новый фильтруемый объект, который имеет количество каждой группы (цвет, марка, год);
grp = df[[‘color’,’make’,’year’]].groupby([‘color’,’make’,’year’]).size()
который возвращает что-то вроде этого
color make year count
black honda 2011 416
Я хотел бы иметь возможность фильтровать его, однако, когда я пытаюсь это:
grp.filter(lambda x: x[‘color’]==‘black’)
Я получаю эту ошибку
ошибку TypeError: 'функция' объект не повторяемое
как я могу использовать "groupby" объект для того, чтобы отфильтровать строки?
2 ответов
Я думаю, вам нужно добавить reset_index
и затем выводится DataFrame
. Последнее использование boolean indexing
:
df = df[['color','make','year']].groupby(['color','make','year'])
.size()
.reset_index(name='count')
df1 = df[df.color == 'black']
1
Фильтр досрочно
cols = ['color','make','year']
df[df.color == 'black', cols].grouby(cols).size()
2
Использовать xs
для индексов поперечных сечений
cols = ['color','make','year']
grp = df[cols].groupby(cols).size()
df.xs('black', level='color', drop_level=False)
или
df.xs('honda', level='make', drop_level=False)
или
df.xs(2011, level='year', drop_level=False)