Skip to main content
 首页 » 编程设计

python之用零替换数据框中的上三角和下三角值,或仅保留对角线值

2025年05月04日15hnrainll

我有以下 DataFrame 作为玩具示例:

a = [5,2,6,8] 
b = [2,10,19,16] 
c = [3,8,15,17] 
d = [3,8,12,20] 
df  = pd.DataFrame([a,b,c,d], columns = ['a','b','c','d']) 
df 

我想创建一个新的 DataFrame df1,它只保留对角线元素并将上三角和下三角值转换为零。

我的最终数据集应该是这样的:

    a   b   c   d 
0   5   0   0   0 
1   0   10  0   0 
2   0   0   15  0 
3   0   0   0   20 

请您参考如下方法:

你可以使用 numpy.diag :

df = pd.DataFrame(data=np.diag(np.diag(df)), columns=df.columns) 
print(df) 

输出

   a   b   c   d 
0  5   0   0   0 
1  0  10   0   0 
2  0   0  15   0 
3  0   0   0  20