首页 > 解决方案 > 返回使用理解列出列对的数据框

问题描述

我从一个与此类似的相关矩阵 DataFrame 开始:

    x      y    z
x   1.0   0.4   0.25
y   0.2   1.0  -0.44
z  -0.3  -0.3  1.0

我想知道如何创建一个新的 DataFrame,它将存储所有列对及其相应的相关值,例如:['Column name1'、'Column name2'、'Correlation value']。

示例行:[x, y, 0.2]

有没有办法通过理解来做到这一点,同时还确保没有包含两次,并且排除了等于 1 的相关对?

就像是[[x, y, df.loc[x,y]] for x in df.columns for y in df.columns

标签: pythonpython-3.xpandas

解决方案


使用pd.DataFrame.unstackreset_index

print(df)

     x    y     z
x  1.0  0.4  0.25
y  0.2  1.0 -0.44
z -0.3 -0.3  1.00

df.unstack().reset_index()

  level_0 level_1     0
0       x       x  1.00
1       x       y  0.20
2       x       z -0.30
3       y       x  0.40
4       y       y  1.00
5       y       z -0.30
6       z       x  0.25
7       z       y -0.44
8       z       z  1.00

推荐阅读