python - DataFrame 的给定列非零的行数

标签 python pandas matrix dataframe

我有一个 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 除外。

例如,列 AB 的交集将为 2(因为 MemberID 1 和 3 对于 AB),AC 的交集也将是 2(因为 MemberID 1 和 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

可以看出,它应该是一个对称矩阵,类似于相关矩阵,但不是相关矩阵。

任意 2 列的交集 = # 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'))

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

最佳答案

这应该是:

z = (df != 0) * 1
z.T.dot(z)

enter image description here

关于python - DataFrame 的给定列非零的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38445974/

相关文章:

Android View 在大分辨率屏幕上的 3d 旋转变换

python - 在Python中使用私钥通过SSH连接并查询Mongo数据库

python - 对数据框中的 bool 值求和

java - 创建对象[同一实例的多个]

python - 将 Pandas Dataframe 中的列除以列的总和

python - 如何以更简单的方式相互减去所有 pandas dataframe 元素?

java - 矩阵库更新

python - 在链表的尾部插入一个节点 python HackerRank

python - 将外部文档包含到 Sphinx 项目中

Python 跟踪范围内的子类