Marco de datos: agrega una columna con el tamaño de un grupo

Tengo el siguiente dataframe:

fsq digits digits_type 0 1 1 odd 1 2 1 odd 2 3 1 odd 3 11 2 even 4 22 2 even 5 101 3 odd 6 111 3 odd 

y quiero agregar una última columna, cuenta que contiene el número de fsq que pertenece al grupo de dígitos , es decir:

  fsq digits digits_type count 0 1 1 odd 3 1 2 1 odd 3 2 3 1 odd 3 3 11 2 even 2 4 22 2 even 2 5 101 3 odd 2 6 111 3 odd 2 

Como hay 3 filas fsq que tienen dígitos iguales a 1, 2 filas fsq que tienen dígitos iguales a 2, etc.

Gracias

 In [395]: df['count'] = df.groupby('digits')['fsq'].transform(len) In [396]: df Out[396]: fsq digits digits_type count 0 1 1 odd 3 1 2 1 odd 3 2 3 1 odd 3 3 11 2 even 2 4 22 2 even 2 5 101 3 odd 2 6 111 3 odd 2 [7 rows x 4 columns] 

En general, debe usar métodos definidos por Pandas, cuando sea posible. Esto a menudo será más eficiente.

En este caso, puede usar 'size' , en la misma línea que df.groupby('digits')['fsq'].size() :

 df = pd.concat([df]*10000) %timeit df.groupby('digits')['fsq'].transform('size') # 3.44 ms per loop %timeit df.groupby('digits')['fsq'].transform(len) # 11.6 ms per loop