最近参加数据挖掘比赛经常使用Pandas,由于涉及到三维的数据,使用了Panel作为存储结构。但是出现了伪增加的情况,花了很久解决了。
- Panel相当于一个存储Dataframe的字典
- Series一维、Dataframe二维、Panel三维
问题描述
data = {
'Item1' : pd.DataFrame(np.random.randn(4, 3)),
'Item2' : pd.DataFrame(np.random.randn(4, 3))
}
p = pd.Panel(data)
p
取出每一层( axis=0)后相当于一个Dataframe,使用Dataframe常用的添加列的方式逐层添加后,虽然逐层访问看起来变了,但是Panel整体并没有改变。
p['Item1']['add'] = pd.DataFrame(np.random.randn(4,1))
p['Item2']['add'] = pd.DataFrame(np.random.randn(4,1))
p['Item1']
p
解决方法
axis=0的添加
p['Item3'] = pd.DataFrame(np.random.randn(p.major_axis.shape[0], p.minor_axis.shape[0]),
index=p.major_axis, columns=p.minor_axis)
axis=1或2的添加
p.ix[:,:,'add'] = pd.DataFrame(np.random.randn(p.major_axis.shape[0], p.items.shape[0]),index=p.major_axis, columns=p.items)
p.to_frame()