【问题标题】:Turn correlation dataframe into list将相关数据框转换为列表
【发布时间】:2022-09-22 21:59:29
【问题描述】:

我有一个相关数据框,我试图把它变成不同的列表:

        A          B            C 
A   1.000000    0.932159    -0.976221

B   0.932159    1.000000    -0.831509

C   -0.976221   -0.831509   1.000000

我需要的输出是:

[A, B, 0.932159]
[A, C, -0.976221]
[B, A, 0.932159]
[B, C, -0.831509]
[C, A, -0.976221]
[C, B, -0.831509]

我已经尝试将数据框转换为列表,但我没有得到我需要的东西。 谢谢

    标签: python correlation


    【解决方案1】:

    堆叠数据框,重置索引,然后排除具有相同第一列和第二列值的行,然后从中创建列表:

    out=df.stack().reset_index()
    out=out[out.iloc[:,0].ne(out.iloc[:,1])].values.tolist()
    

    输出

    [['A', 'B', 0.932159],
     ['A', 'C', -0.976221],
     ['B', 'A', 0.932159],
     ['B', 'C', -0.831509],
     ['C', 'A', -0.976221],
     ['C', 'B', -0.831509]]
    

    【讨论】:

      【解决方案2】:

      对于像这样的小DataFrame,我能想到的最简单的方法是使用list 理解:

      
      corr
      
                A         B         C
      A  1.000000  0.932159 -0.976221
      B  0.932159  1.000000 -0.831509
      C -0.976221 -0.831509  1.000000
      
      
      [[row, col, corr[col][row]] for row in corr.index for col in corr if row != col]
      
      [['A', 'B', 0.932159],
       ['A', 'C', -0.976221],
       ['B', 'A', 0.932159],
       ['B', 'C', -0.831509],
       ['C', 'A', -0.976221],
       ['C', 'B', -0.831509]]
      

      对于普通读者来说,较长形式的方式可能更容易阅读:

      result = []
      for row in corr.index:
          for col in corr:
              if row != col:
                  result.append([row, col, corr[col][row]])
      
      
      result
      
      [['A', 'B', 0.932159],
       ['A', 'C', -0.976221],
       ['B', 'A', 0.932159],
       ['B', 'C', -0.831509],
       ['C', 'A', -0.976221],
       ['C', 'B', -0.831509]]
      

      【讨论】:

        猜你喜欢
        • 2020-04-15
        • 2020-04-17
        • 2022-11-14
        • 2011-05-12
        相关资源
        最近更新 更多