crear múltiples columnas de la lista de valores de otra columna

Tengo el dataframe que se parece a:

Groupe Id MotherName FatherName Field Advanced 56 Laure James English-107,Economics, Management, History, Philosophy Middle 11 Ann Nicolas Web-development, Java-2 Advanced 6 Helen Franc Literature, English-2 Beginner 43 Laure James Mathematics, History, Philosophy, Literature Middle 14 Naomi Franc Java-2, Management, English-107 

Para seguir trabajando con los datos, necesito dividir la columna Field y reemplazarla con varias columnas que se verán así:

 Id English-107 Economics Management History Web-development Java-2 Literature English-2 Mathematics Philosophy 56 1 1 1 1 0 0 0 0 0 1 11 0 0 0 0 1 1 0 0 0 0 

Entonces estas columnas podrían ser anexadas al dataframe inicial. No sé cómo hacerlo, porque solo hay una división básica como

 pd.DataFrame(df.Field.str.split(',',1).tolist()) 

no resuelve mi problema, porque necesito las columnas basadas no solo en la posición en la lista, sino en cada valor único en la lista. ¿Tienes idea de cómo puedo abordarlo?

    Puedes usar concat y str.get_dummies :

     print pd.concat([df['Id'], df['Field'].str.get_dummies(sep=",")], axis=1) Id Economics English-107 English-2 History Java-2 Literature \ 0 56 1 1 0 1 0 0 1 11 0 0 0 0 1 0 2 6 0 0 1 0 0 1 3 43 0 0 0 1 0 1 4 14 0 1 0 0 1 0 Management Mathematics Philosophy Web-development 0 1 0 1 0 1 0 0 0 1 2 0 0 0 0 3 0 1 1 0 4 1 0 0 0 

    Si necesita valores de conteo, puede usar pivot_table (agrego una cadena de Economics para la prueba):

     df1 = df['Field'].str.split(',',expand=True).stack() .groupby(level=0) .value_counts() .reset_index() df1.columns=['a','b','c'] print df1.pivot_table(index='a',columns='b',values='c').fillna(0) b Economics English-107 English-2 History Java-2 Literature Management \ a 0 2 1 0 1 0 0 1 1 0 0 0 0 1 0 0 2 0 0 1 0 0 1 0 3 0 0 0 1 0 1 0 4 0 1 0 0 1 0 1 b Mathematics Philosophy Web-development a 0 0 1 0 1 0 0 1 2 0 0 0 3 1 1 0 4 0 0 0