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()

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值