Extendiendo un marco de panel de pandas a lo largo del eje menor.
Me gustaría extender un marco de datos del Panel a lo largo de un eje menor en pandas. Empiezo creando undic
deDataFrame
s para generar un panel.
import pandas as pd
import numpy as np
rng = pd.date_range('1/1/2013',periods=100,freq='D')
df1 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df2 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df3 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
pf = pd.Panel({'df1':df1,'df2':df2,'df3':df3})
Como era de esperar, encuentro que tengo un panel con las siguientes dimensiones:
Dimensiones: 3 (elementos) x 100 (eje mayor) 4 ejes (eje menor) Ejes: df1 a df3 Eje principal: 2013-01-01 00:00:00 a 2013-04-10 00:00:00 Eje eje menor: A a D
Ahora me gustaría agregar un nuevo conjunto de datos al eje Menor:
pf['df1']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
pf['df2']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
pf['df2']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
Me parece que después de agregar este nuevo eje menor, la forma de las dimensiones de la matriz del panel no ha cambiado:
shape(pf)
[3,100,4]
Puedo acceder a los datos de cada uno de los ítems en el major_axis:
pf.ix['df1',-10:,'E']
2013-04-01 0.168205 2013-04-02 0.677929 2013-04-03 0.845444 2013-04-04 0.431610 2013-04-05 0.501003 2013-04-06 -0.403605 2013-04-07 -0.185033 2013-04-08 0.270093 2013-04-09 1.569180 2013-04-10 -1.374779 Freq: D, Nombre: E
Pero si extiendo el corte para incluir más de un eje principal:
pf.ix[:,:,'E']
Entonces encuentro un error que dice que 'E' es desconocida.
¿Alguien puede sugerir dónde me voy mal o una mejor manera de realizar esta operación?