Подтвердить что ты не робот

Сгруппированные по df в pandas

Я создаю объект groupby из Pandas DataFrame и хочу выделить все группы с размером > 1.

Не работает следующее:

grouped[grouped.size > 1 ]

Также, как можно отфильтровать определенные значения из сгруппированного DataFrame? Например, как удалить все строки из grouped, где столбец 'name' имеет значение 'foo' или 'bar'?

Проприетарный пример:

df = pandas.DataFrame({'A': ['foo','bar','foo','foo'],
                       'B': range(4)})
grouped = df.groupby('A')

Мне нужен объект groupby после удаления групп с размером группы <= 1.

Я пробовал следующее, которое не срабатывало:

grouped[grouped.size() > 1]

Я ожидал:

A
foo 0
    2
    3

Я не уверен, как индексирование/нарезка работает для объекта grouped.

4b9b3361

Ответ 1

С pandas 0.12 вы можете сделать:

>>> grouped.filter(lambda x: len(x) > 1)

     A  B
0  foo  0
2  foo  2
3  foo  3

Ответ 2

Если вам все еще нужно обходное решение:

In [49]: pd.concat([group for _, group in grouped if len(group) > 1])
Out[49]: 
     A  B
0  foo  0
2  foo  2
3  foo  3