How can I convert columns to rows in Pandas?

前端 未结 3 1632
Happy的楠姐
Happy的楠姐 2021-01-23 16:48

I have something like this:

Values     Time
  22        0
  45        1
  65        2
  78        0
  12        1
  45        2

and I want this

相关标签:
3条回答
  • 2021-01-23 17:00

    This is pivot creating the index with cumcount

    df['idx'] = 'Val' + (df.groupby('Time').cumcount()+1).astype(str)
    df.pivot(index='idx', columns='Time', values='Values').rename_axis(None)
    

    Output:

    Time   0   1   2
    Val1  22  45  65
    Val2  78  12  45
    
    0 讨论(0)
  • 2021-01-23 17:09

    If your time-delta is constant, ordered and has no missing values:

    DELTA = 3
    new_values = [df['Values'].iloc[i*DELTA:i*DELTA+DELTA].values.transpose() for i in range(int(len(df)/DELTA))]
    df_new = pd.DataFrame(new_values , index=['Val'+str(i+1) for i in range(len(new_values ))])
    
    print(df_new)
             0   1   2
    Val1    22  45  65
    Val2    78  12  45
    

    Not a pretty solution, but maybe it helps. :-)

    0 讨论(0)
  • 2021-01-23 17:18

    You need to transpose your array/matrix.

    Use

    list(map(list, zip(*l)))
    

    where list is your list

    0 讨论(0)
提交回复
热议问题