Используйте concat
с параметром keys
для Multiindex
:
np.random.seed(234)
df1 = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
df2 = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
df3 = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
df4 = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
df5 = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=list('ABC'))
df = pd.concat([df1, df2, df3, df4, df5], keys=['A', 'B' , 'C', 'D', 'E'])
print (df)
A B C
A 0 8 4 9
1 1 3 7
2 6 3 0
B 0 3 3 2
1 6 8 9
2 3 7 5
C 0 7 4 0
1 0 7 5
2 7 3 9
D 0 3 9 3
1 3 4 4
2 8 5 7
E 0 2 7 4
1 9 3 9
2 8 9 7
Если хотите вывести 2d array
, используйте numpy.concatenate
:
arr = np.concatenate([df1.values, df2.values, df3.values, df4.values, df5.values])
print (arr)
[[8 4 9]
[1 3 7]
[6 3 0]
[3 3 2]
[6 8 9]
[3 7 5]
[7 4 0]
[0 7 5]
[7 3 9]
[3 9 3]
[3 4 4]
[8 5 7]
[2 7 4]
[9 3 9]
[8 9 7]]
EDIT: немного улучшено ваше решение с параметром keys
:
dfALL = pd.concat([df1.stack(), df2.stack()], axis=1, keys=('AA', 'BB'))
print (dfALL)
AA BB
0 X x0 x00
Y y0 y00
Z z0 z00
1 X x1 x11
Y y1 y11
Z z1 z11
2 X x2 x22
Y y2 y22
Z z2 z22