【问题标题】:Transforming a correlation matrix to a 3 column dataframe in pandas?将相关矩阵转换为熊猫中的 3 列数据框?
【发布时间】:2019-04-27 09:29:49
【问题描述】:

我有一个像这样的相关矩阵

    a     b   c
  a 1    0.5  0.3
  b 0.5   1   0.7
  c 0.3  0.7  1

我想将其转换为列如下所示的数据框:

Letter1   letter2   correlation
   a        a           1
   a        b           0.5
   a        c           0.3
   b        a           0.5
   b        b            1      
   .        .            .
   .        .            .      

有允许我这样做的 pandas 命令吗?提前致谢

接下来,我可以像这样为 Letter1 中的字母赋值吗:

 Value1 Letter1  Value2 letter2   correlation
  1        a       1      a           1
  1        a       2      b           0.5
  1        a       3      c           0.3
  2        b       1      a           0.5
  2        b       2      b            1      
  .        .       .      .            .
  .        .       .      .            .   

【问题讨论】:

    标签: python pandas dataframe matrix correlation


    【解决方案1】:

    stackreset_index 一起使用:

    df1 = df.stack().reset_index()
    df1.columns = ['Letter1','Letter2','correlation']
    print (df1)
      Letter1 Letter2  correlation
    0       a       a          1.0
    1       a       b          0.5
    2       a       c          0.3
    3       b       a          0.5
    4       b       b          1.0
    5       b       c          0.7
    6       c       a          0.3
    7       c       b          0.7
    8       c       c          1.0
    

    然后insert 列由factorizeed 值填充的位置:

    df1.insert(0, 'Value1', pd.factorize(df1['Letter1'])[0] + 1)
    df1.insert(2, 'Value2', pd.factorize(df1['Letter2'])[0] + 1)
    
    print (df1)
       Value1 Letter1  Value2 Letter2  correlation
    0       1       a       1       a          1.0
    1       1       a       2       b          0.5
    2       1       a       3       c          0.3
    3       2       b       1       a          0.5
    4       2       b       2       b          1.0
    5       2       b       3       c          0.7
    6       3       c       1       a          0.3
    7       3       c       2       b          0.7
    8       3       c       3       c          1.0
    

    【讨论】:

    • 太棒了...非常感谢
    • 正如后续操作一样,可以创建一个新列,其值对应于字母 1。例如,每次 Letter1 为 a 时,新列将有 1,每次 Letter1 时有 2为B?谢谢
    • 你觉得[a, a, correlation] 吗?
    • @toothsie - 你能把它添加到问题中吗?
    • @toothsie - 欢迎您!如果我的回答有帮助,请不要忘记accept。谢谢。
    猜你喜欢
    • 2021-12-14
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多