Pandas:取每 n 列并堆叠
Pandas: Take Every n Columns and Stack
鉴于此数据框:
pd.DataFrame([range(6),range(6,12)],columns=['A1','A2','A3','B1','B2','B3'])
A1 A2 A3 B1 B2 B3
0 0 1 2 3 4 5
1 6 7 8 9 10 11
我想取每 n 列,在本例中为 3 列,并堆叠成如下所示:
T0 T1 T2
0 A 0 1 2
B 3 4 5
1 A 6 7 8
B 9 10 11
我已经尝试了很多不同的 pandas 方法,例如 concat、stack、melt、wide_to_long,但经过数小时的实验还是无法找到正确的代码。
执行 wide_to_long
+ unstack
和 stack
df=pd.wide_to_long(df.reset_index(),['A','B'],i='index',j='lvl').stack().unstack(1)
lvl 1 2 3
index
0 A 0 1 2
B 3 4 5
1 A 6 7 8
B 9 10 11
鉴于此数据框:
pd.DataFrame([range(6),range(6,12)],columns=['A1','A2','A3','B1','B2','B3'])
A1 A2 A3 B1 B2 B3
0 0 1 2 3 4 5
1 6 7 8 9 10 11
我想取每 n 列,在本例中为 3 列,并堆叠成如下所示:
T0 T1 T2
0 A 0 1 2
B 3 4 5
1 A 6 7 8
B 9 10 11
我已经尝试了很多不同的 pandas 方法,例如 concat、stack、melt、wide_to_long,但经过数小时的实验还是无法找到正确的代码。
执行 wide_to_long
+ unstack
和 stack
df=pd.wide_to_long(df.reset_index(),['A','B'],i='index',j='lvl').stack().unstack(1)
lvl 1 2 3
index
0 A 0 1 2
B 3 4 5
1 A 6 7 8
B 9 10 11