天天看点

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

最近参加数据挖掘比赛经常使用Pandas,由于涉及到三维的数据,使用了Panel作为存储结构。但是出现了伪增加的情况,花了很久解决了。

  • Panel相当于一个存储Dataframe的字典
  • Series一维、Dataframe二维、Panel三维

问题描述

data = {
        'Item1' : pd.DataFrame(np.random.randn(, )),
        'Item2' : pd.DataFrame(np.random.randn(, ))
         }
p = pd.Panel(data)
p
           
Pandas Panel 按不同维度添加数据的方法

取出每一层( axis=0)后相当于一个Dataframe,使用Dataframe常用的添加列的方式逐层添加后,虽然逐层访问看起来变了,但是Panel整体并没有改变。

p['Item1']['add'] = pd.DataFrame(np.random.randn(,))
p['Item2']['add'] = pd.DataFrame(np.random.randn(,))
p['Item1']
           
Pandas Panel 按不同维度添加数据的方法
p
           
Pandas Panel 按不同维度添加数据的方法

解决方法

axis=0的添加

p['Item3'] = pd.DataFrame(np.random.randn(p.major_axis.shape[], p.minor_axis.shape[]),
                                    index=p.major_axis, columns=p.minor_axis)
           
Pandas Panel 按不同维度添加数据的方法

axis=1或2的添加

p.ix[:,:,'add'] =  pd.DataFrame(np.random.randn(p.major_axis.shape[], p.items.shape[]),index=p.major_axis, columns=p.items)
           
Pandas Panel 按不同维度添加数据的方法
p.to_frame()
           
Pandas Panel 按不同维度添加数据的方法

继续阅读