Reshape MultiIndex dataframe to tabular format

后端 未结 3 454
臣服心动
臣服心动 2020-12-10 09:41

Given a sample MultiIndex:

idx = pd.MultiIndex.from_product([[0, 1, 2], [\'a\', \'b\', \'c\', \'d\']])    
df = pd.DataFrame({\'value\' : np.arange(12)}, ind         


        
相关标签:
3条回答
  • 2020-12-10 10:00

    Another alternative, which you should think of when using stack/unstack (though unstack is clearly better in this case!) is pivot_table:

    In [11]: df.pivot_table(values="value", index=df.index.get_level_values(0), columns=df.index.get_level_values(1))
    Out[11]:
       a  b   c   d
    0  0  1   2   3
    1  4  5   6   7
    2  8  9  10  11
    
    0 讨论(0)
  • 2020-12-10 10:01

    By using get_level_values

    pd.crosstab(df.index.get_level_values(0),df.index.get_level_values(1),values=df.value,aggfunc=np.sum)
    Out[477]: 
    col_0  a  b   c   d
    row_0              
    0      0  1   2   3
    1      4  5   6   7
    2      8  9  10  11
    
    0 讨论(0)
  • 2020-12-10 10:09

    Using unstack and stack

    In [5359]: dff = df['value'].unstack()
    
    In [5360]: dff
    Out[5360]:
       a  b   c   d
    0  0  1   2   3
    1  4  5   6   7
    2  8  9  10  11
    
    In [5361]: dff.stack().to_frame('name')
    Out[5361]:
         name
    0 a     0
      b     1
      c     2
      d     3
    1 a     4
      b     5
      c     6
      d     7
    2 a     8
      b     9
      c    10
      d    11
    
    0 讨论(0)
提交回复
热议问题