代码之家  ›  专栏  ›  技术社区  ›  n1000

将空的熊猫数据帧与多索引数据帧联接

  •  3
  • n1000  · 技术社区  · 6 年前

    我想在一个循环中构建一个大熊猫数据帧。在第一次迭代中,数据帧 df1 仍然是空的。当我加入 DF1 具有 df2 它有一个多索引,索引会被某种方式压扁。

    df1 = pd.DataFrame(index=range(6))
    df2 = pd.DataFrame(np.random.randn(6, 3),
                       columns=pd.MultiIndex.from_arrays((['A','A','A'], 
                                                          ['a', 'b', 'c'])))
    df1[df2.columns] = df2
    
    df1
         (A, a)    (A, b)    (A, c)
    0 -0.673923  1.392369  1.848935
    1  1.427368  0.042691  0.130962
    2 -0.258589  0.216157  0.196101
    3 -1.022283  1.312113 -0.770108
    4  0.511127 -0.633477 -0.229149
    5 -1.364237  0.713107  2.124274
    

    我希望有一个完整的多索引数据帧,如下所示:

              A                    
              a         b         c
    0 -0.673923  1.392369  1.848935
    1  1.427368  0.042691  0.130962
    2 -0.258589  0.216157  0.196101
    3 -1.022283  1.312113 -0.770108
    4  0.511127 -0.633477 -0.229149
    5 -1.364237  0.713107  2.124274
    

    我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  3
  •   BENY    6 年前

    当我们为一个简单的索引赋值时,多重索引并不总是被识别的,所以

    df1 = pd.DataFrame(index=range(6),columns=pd.MultiIndex.from_arrays([[],[]]))
    df1[df2.columns] = df2
    df1
    Out[697]: 
              A                    
              a         b         c
    0 -0.755397  0.574920  0.901570
    1 -0.165472 -1.865715  1.583416
    2 -0.403287  1.358329  0.706650
    3  0.028019  1.432543 -0.586325
    4 -0.414851  0.825253  0.745090
    5  0.389917  0.940657  0.125837