我有一个这样的Pandas
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
如我们所见,它应该是对称矩阵,类似于相关矩阵,但不是相关矩阵。
任意两列的交集=of
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'))
任何指点都将不胜感激。蒂亚。
最佳答案
这应该是:
z = (df != 0) * 1
z.T.dot(z)