Pandas panel provides a nice way to collect related data frames together while maintaining correspondence between the index and column values:
import pandas as pd, pylab
#Full dimensions of a slice of our panel
index = ['1','2','3','4'] #major_index
columns = ['a','b','c'] #minor_index
df = pd.DataFrame(pylab.randn(4,3),columns=columns,index=index) #A full slice of the panel
df2 = pd.DataFrame(pylab.randn(3,2),columns=['a','c'],index=['1','3','4']) #A partial slice
df3 = pd.DataFrame(pylab.randn(2,2),columns=['a','b'],index=['2','4']) #Another partial slice
df4 = pd.DataFrame(pylab.randn(2,2),columns=['d','e'],index=['5','6']) #Partial slice with a new column and index
pn = pd.Panel({'A': df})
pn['B'] = df2
pn['C'] = df3
pn['D'] = df4
for key in pn.items:
print pn[key]
-> output
a b c
1 0.243221 -0.142410 1.228757
2 -0.748140 -0.780719 0.644401
3 0.161369 -0.001034 -0.278070
4 -1.143613 -1.547082 0.025639
a b c
1 1.165219 NaN 1.391501
2 NaN NaN NaN
3 -1.484183 NaN 0.541619
4 0.810439 NaN -0.848142
a b c
1 NaN NaN NaN
2 1.310740 1.278829 NaN
3 NaN NaN NaN
4 0.042748 -0.464065 NaN
a b c
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
One thing to note is that Panel does not expand along the minor and major axes.
Comments
Post a Comment