ho un Pandas
DataFrame
che assomiglia a questo:elementi comuni tra le colonne di un dataframe
MemberID A B C D
1 0.3 0.5 0.1 0
2 0 0.2 0.9 0.3
3 0.4 0.2 0.5 0.3
4 0.1 0 0 0.7
Vorrei avere un'altra matrice, che mi dà il numero di elementi diversi da zero per l'intersezione di ogni colonna ad eccezione di MemberID
.
Ad esempio, l'intersezione delle colonne A
e B
sarebbe 2 (perché MemberID
1 e 3 hanno valori diversi da zero per A
e B
), intersezione di A
e C
sarebbe 2 così (perché MemberID
1 e 3 avere valori diversi da zero per A
e C
).
La matrice finale sarebbe così:
A B C D
A 3 2 2 2
B 2 3 3 2
C 2 3 3 2
D 2 2 2 3
Come possiamo vedere, dovrebbe essere una matrice simmetrica, simile a una matrice di correlazione, ma non la matrice di correlazione.
Intersezione di 2 colonne = numero di MemberID
con valori diversi da zero in entrambe le colonne.
Mostrerei qui un codice iniziale, ma mi sembra che ci sarebbe una semplice funzione per eseguire questo compito che non conosco.
Ecco il codice per creare il DataFrame
:
df = pd.DataFrame([[0.3, 0.5, 0.1, 0],
[0, 0.2, 0.9, 0.3],
[ 0.4, 0.2, 0.5, 0.3],
[ 0.1, 0, 0, 0.7]],
columns=list('ABCD'))
Qualsiasi puntatori sarebbe apprezzato. TIA.
'df.A' ha un elemento che è pari a zero. non dovrebbe 'final.loc ['A', 'A'] == 3' – piRSquared