我有一个矩阵数据帧,我想得到对角线上的后半部分的值(所以下面的例子中的1下面的所有内容).我希望结果是一个新的数据框,其中一列列出了所有这些值,但我不确定如何解决这个问题.
缩短版我的df:
Word toxin sloppy grief toxin 1 -0.03 -0.06 sloppy -0.03 1 0.09 grief -0.06 0.09 1
理想的df:
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