我有一个矩阵数据框,我想只获取对角线后半部分的值(所以下面示例中 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
