猿问

在没有明确级别名称的情况下转向多索引

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


例如,最初我的数据如下所示,索引为“日期”和“产品”,然后是一些列:


                    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 不是固定的,并且每次此过程运行时可能或多或少。


郎朗坤
浏览 127回答 1
1回答

湖上湖

使用unstack和swaplevel:df.unstack(1).swaplevel(1,0, axis=1).sort_index(1)product   bar         foo            a    b      a    bdate2011-11   NaN  NaN  1.000  2.12011-12   NaN  NaN  2.432  2.32012-01  0.40  1.7  0.840  1.82014-06  0.00  2.0    NaN  NaN2014-07  1.68  3.0    NaN  NaN
随时随地看视频慕课网APP

相关分类

Python
我要回答