Pandas 如何重新组织数据帧

Pandas 如何重新组织数据帧,pandas,Pandas,我正在尝试重新组织一个熊猫数据框架,看起来像这样 t p q r s 1 a 1 14 26 38 1 b 2 15 27 39 1 c 4 16 28 40 2 a 6 18 30 42 2 b 7 19 31 43 2 c 8 20 32 44 3 a 10 22 34 46 3 b 11 23 35 47 3 c 12 24 36

我正在尝试重新组织一个熊猫数据框架,看起来像这样

    t   p   q   r   s
1   a   1   14  26  38
1   b   2   15  27  39
1   c   4   16  28  40
2   a   6   18  30  42
2   b   7   19  31  43
2   c   8   20  32  44
3   a   10  22  34  46
3   b   11  23  35  47
3   c   12  24  36  48
对于一个看起来像这样的人:

    a               b               c           
    p   q   r   s   p   q   r   s   p   q   r   s
1   1   14  26  38  2   15  27  39  4   16  28  40
2   6   18  30  42  7   19  31  43  8   20  32  44
3   10  22  34  46  11  23  35  47  12  24  36  48
有什么想法吗


谢谢

将轴与交换级别一起使用,即

df.pivot(columns='t').swaplevel(0,1, axis=1).sort_index(axis=1)
输出:

t a b c p q r s p q r s p q r s 1 1 14 26 38 2 15 27 39 4 16 28 40 2 6 18 30 42 7 19 31 43 8 20 32 44 3 10 22 34 46 11 23 35 47 12 24 36 48 您可以使用:

或+:

通过使用熔体和多指数

获胜者是

我的起始df是[29196708行x5列],PC是I7

df = df.set_index('t', append=True).unstack().swaplevel(0,1, axis=1).sort_index(axis=1)
…32.5秒

紧接着

df.pivot(columns='t').swaplevel(0,1, axis=1).sort_index(axis=1)
33.6秒

df = df.set_index('t', append=True).stack().unstack([1,2])
。。花了高达71.1秒的时间

由于没有名为variable的列,因此未尝试使用melt的


谢谢大家的帮助

直到今天,我还没有看到使用参数取消堆栈:因为默认情况下,取消堆栈使用多索引的最后一级,所以通常不是必需的参数。@Bharathshetty,取消堆栈很棒!
df = df.set_index('t', append=True).unstack().swaplevel(0,1, axis=1).sort_index(axis=1)
df.pivot(columns='t').swaplevel(0,1, axis=1).sort_index(axis=1)
df = df.set_index('t', append=True).stack().unstack([1,2])