代码之家  ›  专栏  ›  技术社区  ›  Jake Morris

不使用显式级别名称旋转到多索引

  •  1
  • Jake Morris  · 技术社区  · 7 年前

    我想重塑一个dataframe,使其具有两级列,而不指定子级的名称。

                        a           b
    date    product             
    2011-11 foo         1.          2.1 
    2011-12 foo         2.432       2.3 
    2012-01 bar         0.4         1.7 
    2012-01 foo         0.84        1.8 
    2014-06 bar         0.          2.  
    2014-07 bar         1.68        3.  
    

    请注意,每个日期有一行,即产品组合(索引是唯一的)。

                         foo                   bar
                    a           b        a           b
    date    
    2011-11         1.          2.1      NaN         NaN
    2011-12         2.432       2.3      NaN         NaN
    2012-01         0.84        1.8      0.4         1.7
    2014-06         NaN         NaN      0.          2. 
    2014-07         NaN         NaN      1.68        3. 
    

    我不确定如何写一个pivot,因为列名a和b不是固定的,而且每次运行这个进程时都有或多或少的pivot。

    1 回复  |  直到 7 年前
        1
  •  1
  •   user3483203    7 年前

    使用 unstack swaplevel :

    df.unstack(1).swaplevel(1,0, axis=1).sort_index(1)
    

    product   bar         foo
                a    b      a    b
    date
    2011-11   NaN  NaN  1.000  2.1
    2011-12   NaN  NaN  2.432  2.3
    2012-01  0.40  1.7  0.840  1.8
    2014-06  0.00  2.0    NaN  NaN
    2014-07  1.68  3.0    NaN  NaN