Otimize a divisão da coluna de listas em colunas separadas

Eu estive procurando dividir uma coluna composta de listas em colunas separadas. Eu tenho uma solução, mas é muito lenta.

Eu tenho o seguinte panda dataframe

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

Que eu gostaria de transformar no seguinte quadro de dados.

|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       |

Eu tenho o seguinte código, depois de já criar as colunas que eu precisava:

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

Com o número de linhas que tenho, isso leva uma eternidade e eu esperava encontrar uma maneira mais eficiente de preencher as colunas, mesmo que eu precise criá-las a partir da coluna de listas.