У меня есть Pandas
DataFrame
, который выглядит следующим образом:Общие элементы между столбцами 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
Я хотел бы иметь другую матрицу, которая дает мне число ненулевых элементов для пересечения каждого столбца за исключением MemberID
.
Например, пересечение столбцов A
и B
будет 2 (потому что MemberID
1 и 3 имеют ненулевые значения для A
и B
), пересечение A
и C
будет 2, а также (потому MemberID
1 и 3 имеют ненулевые значения для A
и C
).
Конечная матрица будет выглядеть следующим образом:
A B C D
A 3 2 2 2
B 2 3 3 2
C 2 3 3 2
D 2 2 2 3
Как мы видим, она должна быть симметричной матрицей, аналогичный корреляционной матрицы, но не корреляционная матрица.
Пересечение любых двух столбцов = 0 из MemberID
, имеющих ненулевые значения в обеих колонках.
Я бы сказал здесь несколько исходных кодов, но я чувствую, что будет простая функция для выполнения этой задачи, о которой я не знаю.
Вот код, чтобы создать 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'))
Все указатели будут оценены. ТИА.
'df.A' имеет один элемент, который равен нулю. не должен 'final.loc ['A', 'A'] == 3' – piRSquared