pandas dataframe reshaping/stacking of multiple value variables into seperate columns

前端 未结 3 854
小蘑菇
小蘑菇 2020-12-17 06:01

Hi I\'m trying to reshape a data frame in a certain way.

this is the data frame I have,

         des1 des2 des3 interval1 interval2 interval3
value           


        
3条回答
  •  忘掉有多难
    2020-12-17 06:27

    This might be a shorter approach:

    [72]:
    
    df.columns = pd.MultiIndex.from_tuples(map(lambda x: (x[:-1], x), df.columns))
    In [73]:
    
    print pd.DataFrame({key:df[key].stack().values for key in set(df.columns.get_level_values(0))},
                       index = df['des'].stack().index.get_level_values(0))
          des interval
    value             
    aaa     a      ##1
    aaa     b      ##2
    aaa     c      ##3
    bbb     d      ##4
    bbb     e      ##5
    bbb     f      ##6
    ccc     g      ##7
    ccc     h      ##8
    ccc     i      ##9
    

    Or preserve the 1,2,3 info:

    [73]:
    
    df.columns = pd.MultiIndex.from_tuples(map(lambda x: (x[:-1], x[-1]), df.columns))
    Keys = set(df.columns.get_level_values(0))
    df2  = pd.concat([df[key].stack() for key in Keys], axis=1)
    df2.columns = Keys
    print df2
            des interval
    value               
    aaa   1   a      ##1
          2   b      ##2
          3   c      ##3
    bbb   1   d      ##4
          2   e      ##5
          3   f      ##6
    ccc   1   g      ##7
          2   h      ##8
          3   i      ##9
    

提交回复
热议问题