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

如何将Pandas DataFrame转换为类相关矩阵的对称方阵?

问题描述

现有如下结构的DataFrame:

name1 name2  value
0     A     B   1300
1     A     C    150
2     A     D    300
3     B     C    450
4     B     D    200
5     C     D    300

尝试用pivot方法转换表格,代码如下:

table = df.pivot(columns='name1', index='name2', values='value')

得到的结果是:

name1       A      B      C
name2                      
B      1300.0    NaN    NaN
C       150.0  450.0    NaN
D       300.0  200.0  300.0

需要生成一个包含A-D作为行和列的对称方阵,要求name1与name2的对应值和name2与name1的对应值相等(例如A/B和B/A都为1300),期望输出如下:

A       B      C      D
A     NaN  1300.0  150.0  300.0
B  1300.0     NaN  450.0  200.0
C   150.0   450.0    NaN  300.0
D   300.0   200.0  300.0    NaN

可复现输入代码:

import pandas as pd

products_list = [['A', 'B', 1300],
                 ['A', 'C', 150],
                 ['A', 'D', 300],
                 ['B', 'C', 450],
                 ['B', 'D', 200],
                 ['C', 'D', 300]]

df = pd.DataFrame(products_list, columns=['name1', 'name2', 'value'])
解决方案

方法一:构造对称数据集后再透视

先把原始数据的name1和name2互换,生成对称记录并合并到原数据中,最后透视得到对称方阵:

# 复制原数据并交换name1和name2列
df_reversed = df.copy()
df_reversed[['name1', 'name2']] = df_reversed[['name2', 'name1']]

# 合并原数据和反转后的数据
df_sym = pd.concat([df, df_reversed], ignore_index=True)

# 透视得到对称表格
table = df_sym.pivot(columns='name1', index='name2', values='value')

# 调整行和列的顺序为A-D
table = table.reindex(index=['A', 'B', 'C', 'D'], columns=['A', 'B', 'C', 'D'])

# 将对角线设置为NaN(原数据无自身对应值)
import numpy as np
np.fill_diagonal(table.values, np.nan)

print(table)

方法二:基于初始透视表填充对称值

如果不想修改原始数据集,可以先得到初始透视表,再通过转置填充对称位置的缺失值:

# 先执行原透视操作
table = df.pivot(columns='name1', index='name2', values='value')

# 用转置后的表格填充原表格的缺失值,得到对称结构
sym_table = table.combine_first(table.T)

# 调整行和列的顺序为A-D
sym_table = sym_table.reindex(index=['A', 'B', 'C', 'D'], columns=['A', 'B', 'C', 'D'])

# 将对角线设置为NaN
import numpy as np
np.fill_diagonal(sym_table.values, np.nan)

print(sym_table)

两种方法都能生成符合要求的对称方阵,适合后续绘制热力图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:52:29