Necesidad de transponer un dataframe pandas

Tengo una serie que se parece a esto:

col1 id 0 a 10 1 b 20 2 c 30 3 b 10 4 d 10 5 a 30 6 e 40 

Mi salida deseada es esta:

  abcde 10 1 1 0 1 0 20 0 1 0 0 0 30 1 0 1 0 0 40 0 0 0 0 1 

Tengo este codigo

 import pandas as pd df['dummies'] = 1 df_ind.pivot(index='id', columns='col1', values='dummies') 

Me sale un error:

  137 138 if mask.sum()  139 raise ValueError('Index contains duplicate entries, ' 140 'cannot reshape') 141 ValueError: Index contains duplicate entries, cannot reshape 

Existen identificaciones duplicadas porque se pueden atribuir múltiples valores en col1 a una única identificación.

    ¿Cómo puedo lograr la salida deseada?

    ¡Gracias!

    Podrías usar pd.crosstab

     In [329]: pd.crosstab(df.id, df.col1) Out[329]: col1 abcde id 10 1 1 0 1 0 20 0 1 0 0 0 30 1 0 1 0 0 40 0 0 0 0 1 

    O , use pd.pivot_table

     In [336]: df.pivot_table(index='id', columns='col1', aggfunc=len, fill_value=0) Out[336]: col1 abcde id 10 1 1 0 1 0 20 0 1 0 0 0 30 1 0 1 0 0 40 0 0 0 0 1 

    O , use groupby y unstack

     In [339]: df.groupby(['id', 'col1']).size().unstack(fill_value=0) Out[339]: col1 abcde id 10 1 1 0 1 0 20 0 1 0 0 0 30 1 0 1 0 0 40 0 0 0 0 1