Ampliar el dataframe pandas

Tengo datos que se parecen a esto:

Box,Code Green,1221 Green,8391 Red,3709 Red,2911 Blue,9820 Blue,4530 

Utilizando un dataframe de pandas, me pregunto si es posible generar algo como esto:

 Box,Code1,Code2 Green,1221,8391 Red,3709,2911 Blue,9820,4530 

Mis datos siempre tienen un número igual de filas por ‘Cuadro’.

He estado experimentando con pivotes y tablas de referencias cruzadas (además de astackr y desastackr) en pandas, pero no he encontrado nada que me lleve al resultado de ‘ampliar’ que estoy buscando.

Puede usar groupby para las list y luego el constructor DataFrame :

 a = df.groupby('Box')['Code'].apply(list) df = pd.DataFrame(a.values.tolist(), index=a.index).add_prefix('Code').reset_index() print (df) Box Code0 Code1 0 Blue 9820 4530 1 Green 1221 8391 2 Red 3709 2911 

O cumcount para la nueva Series con pandas.pivot :

 g = df.groupby('Box').cumcount() df = pd.pivot(index=df['Box'], columns=g, values=df['Code']).add_prefix('Code').reset_index() print (df) Box Code0 Code1 0 Blue 9820 4530 1 Green 1221 8391 2 Red 3709 2911 

Y solución similar con unstack :

 df['g'] = df.groupby('Box').cumcount() df = df.set_index(['Box', 'g'])['Code'].unstack().add_prefix('Code').reset_index() print (df) g Box Code0 Code1 0 Blue 9820 4530 1 Green 1221 8391 2 Red 3709 2911