Python Panda: encuentra una cadena específica en una columna y llena la columna que coincida con la cadena

Tengo un dataframe con varias columnas. Uno de ellos está lleno de “géneros” de película separados por |, he dividido esta columna en varios otros para obtener X columnas cada una con el valor dividido. Sin embargo, lo que necesitaría es tener 1 columna para cada “género” que se rellene con 1 o 0, dependiendo de si el encabezado de la columna se encuentra en las columnas de los géneros nominales o en una de las columnas divididas. Tengo mi dataframe configurado de esta manera:

df = pd.DataFrame({'A': ['dtwig|Action', 'Dtwig', 'Action'], 'A_split1': ['Dtwig', 'Dtwig', 'Action'],'A_split2': ['Action', 'None', 'None'],'Dtwig': [0, 0, 0], 'Action': [0, 0, 0], 'Western': [0, 0, 0]}, index = ['a1', 'a2', 'a3']) df 

Pero no encontré cómo verificar si el nombre del encabezado está dentro de una cadena para agregar el 1 o el 0.

Creo que necesitas pop para extraer columna con str.get_dummies y join al original:

 df = pd.DataFrame({'A': ['Dtwig|Action', 'Dtwig', 'Action'], 'B':range(3)}, index = ['a1', 'a2', 'a3']) print (df) AB a1 Dtwig|Action 0 a2 Dtwig 1 a3 Action 2 df = df.join(df.pop('A').str.get_dummies()) print (df) B Action Dtwig a1 0 1 1 a2 1 0 1 a3 2 1 0 

Si quieres columna original:

 df = df.join(df['A'].str.get_dummies()) print (df) AB Action Dtwig a1 Dtwig|Action 0 1 1 a2 Dtwig 1 0 1 a3 Action 2 1 0