¿Qué es as_index en groupby en pandas?

¿Cuál es exactamente la función de as_index en groupby en Pandas?

print es tu amigo cuando no entiendes nada. Se despeja muchas veces las dudas.

Echar un vistazo:

 import pandas as pd df = pd.DataFrame(data={'books':['bk1','bk1','bk1','bk2','bk2','bk3'], 'price': [12,12,12,15,15,17]}) print df print df.groupby('books', as_index=True).sum() print df.groupby('books', as_index=False).sum() 

Salida:

  books price 0 bk1 12 1 bk1 12 2 bk1 12 3 bk2 15 4 bk2 15 5 bk3 17 price books bk1 36 bk2 30 bk3 17 books price 0 bk1 36 1 bk2 30 2 bk3 17 

Cuando as_index=True la (s) clave (s) que usa en groupby se convertirá en un índice en el nuevo dataframe.

Los beneficios que obtiene cuando establece la columna como índice son:

  1. Velocidad. Cuando filtra valores basados ​​en la columna de índice, por ejemplo. df.loc['bk1'] , sería más rápido debido al hashing de la columna de índice. No tiene que atravesar toda la columna de books para encontrar 'bk1' . Solo calculará el valor de hash de 'bk1' y lo encontrará en 1 vez.

  2. Facilitar. Cuando as_index=True puede usar esta syntax df.loc['bk1'] que es más corta y más rápida en comparación con df.loc[df.books=='bk1'] que es más larga y lenta.

Cuando se usa el grupo por función, as_index se puede establecer en verdadero o falso dependiendo de si desea que la columna por la que se agrupó sea el índice de la salida.

 import pandas as pd table_r = pd.DataFrame({ 'colors': ['orange', 'red', 'orange', 'red'], 'price': [1000, 2000, 3000, 4000], 'quantity': [500, 3000, 3000, 4000], }) new_group = table_r.groupby('colors',as_index=True).count().sort('price', ascending=False) print new_group 

salida:

  price quantity colors orange 2 2 red 2 2 

Ahora con as_index = Falso

  colors price quantity 0 orange 2 2 1 red 2 2 

Observe que los colores ya no son un índice cuando cambiamos as_index = False