Optimice la división de la columna de listas en columnas separadas

He estado buscando dividir una columna compuesta de listas en columnas separadas. Tengo una solución, pero es muy lenta.

Tengo el siguiente marco de datos de pandas

|basket                             |
|['two apple','A banana']           |
|['Red pear','A banana']            |
|['two apple','A banana','Red pear']|

Que me gustaría transformar en el siguiente marco de datos.

|basket                             |two apple|A banana|Red pear|
|['two apple','A banana']           |1        |1       |0       |
|['Red pear','A banana']            |0        |1       |1       |
|['two apple','A banana','Red pear']|1        |1       |1       |

Tengo el siguiente código, después de crear las columnas que necesitaba:

for index,row in enumerate(df.basket):
    if index>0 and index%10000==0:
        print(index/len(df.baskets),' percent complete')
    for n,col in enumerate(df.columns):
        for pattern in row:
            if col == pattern:
                df[col,index]=1
                break

Con el número de filas que tengo, esto está tomando una eternidad y esperaba encontrar una forma más eficiente de poblar las columnas, incluso si tengo que crearlas a partir de la columna de listas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta