在没有显式级别名称的情况下转到多索引

时间:2018-09-12 16:16:43

标签: python pandas

我想将数据框重塑为具有两级列,而无需指定子级的名称。

作为一个例子,最初我的数据是这样的,索引为“ date”和“ product”,然后是一些列:

                    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. 

由于列名a和b不是固定的,我不确定如何编写数据透视表,并且每次运行此过程时可能会有更多或更少的内容。

1 个答案:

答案 0 :(得分:1)

使用 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
相关问题