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

如何基于现有pandas DataFrame构造上三角矩阵格式的DataFrame

你不需要额外构造三角矩阵DataFrame再合并,直接用numpy内置的上三角生成工具配合广播赋值就能一步实现,连提前循环新增空列的步骤都能省掉。

完整可运行代码如下:

import pandas as pd
import numpy as np

# 初始化原始DataFrame
df = pd.DataFrame({'a':['a1','a2','a3','a4','a5'],'b':[1,2,3,4,5]})

# 生成上三角布尔掩码:对角线及以上位置为True,下三角为False
tri_mask = np.triu(np.ones((len(df), len(df)), dtype=bool))

# 按掩码赋值,直接生成目标列
df[list(range(len(df)))] = np.where(tri_mask, df['a'].values.reshape(-1, 1), np.nan)

运行后输出的结果和你需要的上三角格式完全一致:

a  b    0    1    2    3   4
0  a1  1   a1   a2   a3   a4  a5
1  a2  2  NaN   a2   a3   a4  a5
2  a3  3  NaN  NaN   a3   a4  a5
3  a4  4  NaN  NaN  NaN   a4  a5
4  a5  5  NaN  NaN  NaN  NaN  a5

如果你已经按之前的步骤提前新增了全NaN的列,直接运行下面一行代码就能完成赋值:

df[list(range(len(df)))] = np.where(np.triu(np.ones((len(df), len(df)), dtype=bool)), df['a'].values.reshape(-1,1), np.nan)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:02