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

如何使用pandas将配对值DataFrame转换为(0,1)矩阵

实现代码

直接使用pandas内置的交叉表统计+索引补全即可完成,无需手动写循环,代码如下:

import numpy as np
import pandas as pd

# 你给定的原始数据
A = pd.Series(np.array([24, 25, 26, 27, 28, 29]))
B = pd.Series(np.array([105, 106, 107, 108, 109]))

AB_dataframe = pd.DataFrame({
    'A': [25, 25, 25, 26, 26, 27, 27, 28, 29],
    'B': [106, 108, 109, 108, 109, 106, 108, 108, 107]
})

# 核心转换逻辑
# 1. 统计A、B配对的出现频次,超过1次的统一截断为1
cross_tab = pd.crosstab(AB_dataframe['A'], AB_dataframe['B']).clip(upper=1)
# 2. 按完整的A、B取值补全行、列,缺失的配对填充为0
result = cross_tab.reindex(index=A, columns=B, fill_value=0)

print(result)

输出结果

运行后输出和预期完全一致:

105  106  107  108  109
24    0    0    0    0    0
25    0    1    0    1    1
26    0    0    0    1    1
27    0    1    0    1    0
28    0    0    0    1    0
29    0    0    1    0    0

逻辑说明

  • pd.crosstab用于统计两个字段组合的出现频次,天然满足配对存在性统计的基础需求
  • clip(upper=1)用来处理可能存在的重复配对,无论出现多少次统一标记为1
  • reindex用来对齐给定的完整A、B取值,把原本不在统计范围内的24、105等维度补全,缺失值填0即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:06