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

如何使用pandas对矩阵做对角线翻转折叠,将成对比较数据填充到左下侧

解决方法

核心逻辑是先调整每对刺激的顺序,确保所有数值对应的行索引恒大于列索引,pivot后自然落在左下三角区域:

  1. 对原始数据的每一行,取stimA和stimB的较大值作为新的行索引,较小值作为新的列索引
  2. 用调整后的索引做pivot,最后补全所有刺激对应的行列即可

完整代码如下:

import pandas as pd

# 读取数据
session1 = pd.read_csv(filepath, names=['stimA', 'stimB', 'subjectAnswer'])

# 调整刺激对顺序,确保行索引 > 列索引
session1['row_idx'] = session1[['stimA', 'stimB']].max(axis=1)
session1['col_idx'] = session1[['stimA', 'stimB']].min(axis=1)

# 生成矩阵并补全所有刺激编号的行列
all_stim = sorted(pd.unique(session1[['stimA', 'stimB']].values.ravel()))
pivoted = session1.pivot(index='row_idx', columns='col_idx', values='subjectAnswer')\
                  .reindex(index=all_stim, columns=all_stim)

# 输出结果验证
print(pivoted)

运行后输出结果和你期望的完全一致:

col_idx    1     2     3     4   5
row_idx                          
1        NaN   NaN   NaN   NaN NaN
2        6.0   NaN   NaN   NaN NaN
3        6.0  10.0   NaN   NaN NaN
4        6.0  26.0  21.0   NaN NaN
5        6.0  13.0  15.0  26.0 NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 19:24:03