Las pandas crean una nueva columna con conteo de groupby.

Tengo un df que se parece a lo siguiente:

id item color 01 truck red 02 truck red 03 car black 04 truck blue 05 car black 

Estoy tratando de crear un df que se parece a esto:

 item color count truck red 2 truck blue 1 car black 2 

Yo he tratado

 df["count"] = df.groupby("item")["color"].transform('count') 

Pero no es exactamente lo que estoy buscando.

Cualquier orientación es apreciada.

Eso no es una nueva columna, es un nuevo DataFrame:

 In [11]: df.groupby(["item", "color"]).count() Out[11]: id item color car black 2 truck blue 1 red 2 

Para obtener el resultado que desea es utilizar reset_index :

 In [12]: df.groupby(["item", "color"])["id"].count().reset_index(name="count") Out[12]: item color count 0 car black 2 1 truck blue 1 2 truck red 2 

Para obtener una “nueva columna” puede usar transformar:

 In [13]: df.groupby(["item", "color"])["id"].transform("count") Out[13]: 0 2 1 2 2 2 3 1 4 2 dtype: int64 

Recomiendo leer la sección dividir aplicar-combinar de los documentos .