filtrando df agrupados en pandas

Estoy creando un objeto groupby partir de un DataFrame Pandas y quiero seleccionar todos los grupos con> 1 tamaño.

Lo siguiente no parece funcionar:

 grouped[grouped.size > 1 ] 

Además, ¿cómo se puede filtrar ciertos valores de un DataFrame agrupado? Por ejemplo, ¿cómo podría eliminar todas las filas del grupo donde la columna 'name' tiene un valor 'foo' o 'bar' ?

Ejemplo elaborado

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

Necesito el objeto groupby después de eliminar los grupos que tienen un tamaño de grupo <= 1.

Intenté lo siguiente, que no funcionó:

 grouped[grouped.size() > 1] 

Esperaba:

 A foo 0 2 3 

No estoy seguro de cómo funciona la indexación / segmentación para el objeto grouped .

A partir de los pandas 0.12 puedes hacer:

 >>> grouped.filter(lambda x: len(x) > 1) AB 0 foo 0 2 foo 2 3 foo 3 

Si todavía necesita una solución:

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

He encontrado que la transform es mucho más eficiente que el filter para marcos de datos muy grandes:

 element_group_sizes = df['A'].groupby(df['A']).transform('size') df[element_group_sizes>1] 

O, en una línea:

 df[df['A'].groupby(df['A']).transform('size')>1]