Skip to main content
 首页 » 编程设计

python之在对角线下方的 pandas df 中获取值

2025年05月04日23虾米姐

我有一个矩阵数据框,我想只获取对角线后半部分的值(所以下面示例中 1 下的所有值)。我希望结果是一个新的数据框,其中一列列出了所有这些值,但我不确定具体如何去做。

我的 df 的简化版本:

Word    toxin    sloppy  grief 
toxin   1       -0.03    -0.06 
sloppy  -0.03    1       0.09 
grief   -0.06    0.09    1 

理想的方向:

Column 
-0.03 
-0.06 
0.09 

非常感谢任何帮助!

请您参考如下方法:

你可以使用 np.tril_indices获得下三角元素的索引。然后使用 NumPy 索引(例如 values[np.tril_indices(...)])在数组中获取这些值:

import numpy as np 
import pandas as pd 
 
df = pd.DataFrame({'Word': ['toxin', 'sloppy', 'grief'], 
 'grief': [-0.059999999999999998, 0.089999999999999997, 1.0], 
 'sloppy': [-0.029999999999999999, 1.0, 0.089999999999999997], 
 'toxin': [1.0, -0.029999999999999999, -0.059999999999999998]}) 
 
 
values = df[df['Word']].values 
lower_triangular = values[np.tril_indices(values.shape[0], -1)] 
print(pd.DataFrame({'Column': lower_triangular}) 

产量

   Column 
0   -0.03 
1   -0.06 
2    0.09