Cree una matriz de adyacencia para dos columnas en el dataframe de pandas

Tengo un dataframe de la forma:

index Name_A Name_B 0 Adam Ben 1 Chris David 2 Adam Chris 3 Ben Chris 

Y me gustaría obtener la matriz de adyacencia para Name_A y Name_B , es decir:

  Adam Ben Chris David Adam 0 1 1 0 Ben 0 0 1 0 Chris 0 0 0 1 David 0 0 0 0 

¿Cuál es la manera más python / escalable de abordar esto?

EDITAR: También, sé que si la fila Adam, Ben está en el conjunto de datos, en algún otro punto, Ben, Adam también estará en el conjunto de datos.

Puede usar la crosstab reindex crosstab y luego reindex por union de valores de columna e índice:

 df = pd.crosstab(df.Name_A, df.Name_B) print (df) Name_B Ben Chris David Name_A Adam 1 1 0 Ben 0 1 0 Chris 0 0 1 df = pd.crosstab(df.Name_A, df.Name_B) idx = df.columns.union(df.index) df = df.reindex(index = idx, columns=idx, fill_value=0) print (df) Adam Ben Chris David Adam 0 1 1 0 Ben 0 0 1 0 Chris 0 0 0 1 David 0 0 0 0