You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas Series转换为统计相同值对应关系的矩阵

解决方法

你要的是基于原Series值的相等性构建布尔矩阵,直接用NumPy广播就能快速实现,步骤如下:

  1. 先构造示例中的Series:
import pandas as pd

# 原Series
s = pd.Series([1,2,3,1,2], index=[1,2,3,4,5], name='Col Values')
  1. 生成目标矩阵:
# 提取Series的值数组
vals = s.values
# 广播比较每个值与所有值是否相等,转成整数0/1
equal_matrix = (vals[:, None] == vals).astype(int)
# 转换成DataFrame,设置行列索引与原Series一致
result_df = pd.DataFrame(equal_matrix, index=s.index, columns=s.index)

运行后result_df就是你要的矩阵:

Index12345
110010
201001
300100
410010
501001

为什么透视表/相关函数不行?

  • 透视表是做数据聚合统计的,没法直接实现这种逐元素的相等性比较;
  • 相关函数计算的是变量间的线性相关性,和你要的"值相等则标1"逻辑完全不匹配。

内容的提问来源于stack exchange,提问作者user8143996

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:43:30