Transformar matriz a lista en pandas

Tengo la duda de como hacer esto pythonicamente con pandas
(suguro usando FOR no es)

Partiendo de esta matriz:

A = pd.DataFrame({'x1':[1,2,3],'x2':[7,8,9]}, index=['y1','y2','y3'])
	x1	x2
y1	1	7
y2	2	8
y3	3	9

Quiero obtener esta otra, que se parece mucho a una lista con doble indice en realidad):

		Z
Y	X	
y1	x1	1
y1	x2	7
y2	x1	2
y2	x2	8
y3	x1	3
y3	x2	9
# aca los nombres de las columnas no importan, nomas que X e Y son indices

Lo estoy haciendo asi:

B = []
for i in A.index:
    for j in A.columns:
        B.append([i,j, A.loc[i,j]])

C = pd.DataFrame(B,columns=['X','Y','Z']).set_index(['X','Y'])

Que funciona, pero tiene que haber una forma mejor usando pandas

Bueno, acabo de encontrar que DataFrame.stack() hace justo esto

2 Me gusta