首页 > 解决方案 > 将数据框中的上下三角形值替换为零,或仅保留对角线值

问题描述

我有以下 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

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

我的最终数据集应如下所示:

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

标签: pythonpandas

解决方案


您可以使用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

推荐阅读