DataFrame列之间的公共元素

Pat*_*bug 5 python matrix dataframe pandas

我有一个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
Run Code Online (Sandbox Code Playgroud)

我想有另一个矩阵,它给出了每个列的交集的非零元素的数量,除了MemberID.

例如,列的交点AB将是2(因为MemberID1和3具有非零值AB),相交AC将是2,以及(因为MemberID1和3具有非零值AC).

最终矩阵看起来像这样:

    A    B    C    D
A   3    2    2    2
B   2    3    3    2
C   2    3    3    2
D   2    2    2    3
Run Code Online (Sandbox Code Playgroud)

我们可以看到,它应该是一个对称矩阵,类似于相关矩阵,但不是相关矩阵.

任意2列的交点=两列中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'))
Run Code Online (Sandbox Code Playgroud)

任何指针将不胜感激.TIA.

piR*_*red 4

这应该是:

z = (df != 0) * 1
z.T.dot(z)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述