如何对Pandas数据框布尔列统计两两同真计数生成组合计数方阵
布尔列重合计数矩阵实现方案
利用Pandas矩阵乘法的特性可以一行代码完成计算,性能远高于循环或GroupBy方案:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Col1': [False, False, False, False, True], 'Col2': [True, True, True, True, False], 'Col3': [True, True, True, False, True] }) # 核心计算:转置后与int类型的原数据做矩阵乘法 res = df.T @ df.astype(int)
输出结果和你要求的完全一致:
Col1 Col2 Col3 Col1 1 0 1 Col2 0 4 3 Col3 1 3 4
原理解释
- 布尔值转int后
True对应1、False对应0 - 矩阵乘法中,结果的
[i,j]位置元素等于第一个矩阵第i行和第二个矩阵第j列的逐元素乘积之和,刚好对应第i列和第j列同时为True的行数 - 对角线元素为对应列自身True值的总计数,符合你的示例要求
内容的提问来源于stack exchange,提问作者John K
相关产品推荐
相关产品推荐

