python - 将数据框中的上下三角形值替换为零,或仅保留对角线值
问题描述
我有以下 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
解决方案
您可以使用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
推荐阅读
- linq - ef6 使用网桥查询多对多
- python - selenium 按钮,同一个类,onclick 搜索有很多 '
- java - 将二维数组缩放两倍
- python - python - 如何使用Basemap lib在Python中的contourf上绘制点?
- reactjs - 使用 graphql 在 Gatsby 中显示目录(降价文件)的内容
- python - 在 Keras 中实现 LSTM
- angular - Outlook 插件:messageCompose vs message
- c# - 将 dataGridView 重新启动为空状态
- python-3.x - ticker.FuncFormatter 不应用刻度标签,为什么?
- docker - 无法在 Kubernetes 的不同节点上卷曲 pod