Pandas Panel 按不同维度添加数据的方法

最近参加数据挖掘比赛经常使用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()

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u010030977/article/details/79916787