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])