Adyacencia matriz utilizando columna de agrupación

DuckSaucer:

Actualmente estoy empezando a entrar en pandas y me preguntaba, si hay una función darme categorías comunes de los elementos de una trama de datos. Visualizar:

Estos son los datos que he (altamente ejemplo simplificado, obviamente)

   Discipline   Person
0    football   Alanis
1    football  Bernard
2    football  Delilah
3  basketball  Charlie
4  basketball  Delilah
5      tennis  Charlie

Y me gustaría saber, que dos personas comparten una disciplina, idealmente en forma de una matriz de este modo:

        Alanis  Bernard Charlie Delilah
Alanis  True    True    False   True    
Bernard True    True    False   True
Charlie False   False   True    True
Delilah True    True    True    True    

Alternativamente, podría ser una función que devuelve una lista de categorías comunes.
Ni siquiera sé si los pandas es la mejor herramienta para una tarea como ésta (probablemente no), como ya he dicho, estoy todavía un novato. Yo aprecio su ayuda sin embargo. ¡Gracias!

el original:

Un enfoque podría ser la construcción de una red, y obtener de él la matriz de adyacencia :

import networkx as nx
from itertools import combinations, chain

L = df.groupby('Discipline').Person.agg(list)

G = nx.Graph()
L = [list(combinations(i,2)) for i in L.values.tolist()]
G.add_edges_from(chain.from_iterable(L))

nx.to_pandas_adjacency(G, nodelist=sorted(G.nodes())).astype(bool)

          Alanis  Bernard  Charlie  Delilah
Alanis    False     True    False     True
Bernard    True    False    False     True
Charlie   False    False    False     True
Delilah    True     True     True    False

Si desea que los valores diagonales se establece en True, sólo podría añadir:

import numpy as np
out[:] = out.values + np.eye(out.shape[1], dtype=bool)

print(out)

         Alanis  Bernard  Charlie  Delilah
Alanis     True     True    False     True
Bernard    True     True    False     True
Charlie   False    False     True     True
Delilah    True     True     True     True

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=400065&siteId=1
Recomendado
Clasificación