Datos de pandas (clave, valor), mueven la instancia duplicada del valor de la clave a una nueva columna

Tengo un dataframe con las columnas ‘NAME’ y ‘VALUE’:

NAME VALUE apple 6 banana 3 cherry 7 apple 2 banana 5 cherry 3 

Me gustaría mover el VALOR de las instancias duplicadas a una nueva columna como tal:

 NAME VALUE VALUE2 apple 6 2 banana 3 5 cherry 7 3 

Lo he hecho en Python anteriormente al iterar a través de las filas CSV y mantener una lista única de las lecturas de NAME hasta ahora, verificando la existencia de NAME en la lista … si es así, entonces es la segunda vez que lo veo entonces agrego su VALOR a la nueva columna VALOR2. Por cierto, no se supone que las filas estén en ningún orden en particular.

¿Hay una manera rápida de hacer esto en Pandas?

Necesitaremos dos llamadas a set_index más un unstack :

 df = df.set_index('NAME').set_index( df.groupby('NAME').cumcount(), append=True ).unstack() df.columns = df.columns.map('{0[0]}{0[1]}'.format) 

 df VALUE0 VALUE1 NAME apple 6 2 banana 3 5 cherry 7 3 

Mediante el uso de pivot

 df.assign(key=df.groupby('NAME').cumcount()+1).pivot('NAME','key','VALUE').add_prefix('VALUE_') Out[397]: key VALUE_1 VALUE_2 NAME apple 6 2 banana 3 5 cherry 7 3