我想在pandas中沿着短轴扩展Panel数据框架.我开始创建一个DataFrames的dic来生成一个Panel.
import pandas as pd
import numpy as np
rng = pd.date_range('1/1/2013',periods=100,freq='D')
df1 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df2 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df3 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
pf = pd.Panel({'df1':df1,'df2':df2,'df3':df3})
Dimensions: 3 (items) x 100 (major_axis) x 4 (minor_axis) Items axis:
df1 to df3 Major_axis axis: 2013-01-01 00:00:00 to 2013-04-10 00:00:00
Minor_axis axis: A to D
pf['df1']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
pf['df2']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
pf['df2']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
我发现在添加这个新的短轴后,面板阵列尺寸的形状没有改变:
shape(pf)
[3,100,4]
我可以访问major_axis中每个项目的数据:
pf.ix['df1',-10:,'E']
2013-04-01 0.168205 2013-04-02 0.677929 2013-04-03 0.845444
2013-04-04 0.431610 2013-04-05 0.501003 2013-04-06 -0.403605
2013-04-07 -0.185033 2013-04-08 0.270093 2013-04-09 1.569180
2013-04-10 -1.374779 Freq: D, Name: E
但是,如果我将切片扩展为包含多个主轴:
pf.ix[:,:,'E']
任何人都可以建议我出错的地方或更好的方法来执行此操作吗?
解决方法:
这现在无法正常工作,请参见https://github.com/pydata/pandas/issues/2578
但是你可以用这种方式完成你想要的.这是一个相当便宜的操作,因为没有
复制.
In [18]: x = pf.transpose(2,0,1)
In [19]: x
Out[19]:
<class 'pandas.core.panel.Panel'>
Dimensions: 4 (items) x 3 (major_axis) x 100 (minor_axis)
Items axis: A to D
Major_axis axis: df1 to df3
Minor_axis axis: 2013-01-01 00:00:00 to 2013-04-10 00:00:00
In [20]: x['E'] = new_df
In [21]: x.transpose(1,2,0)
Out[21]:
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 100 (major_axis) x 5 (minor_axis)
Items axis: df1 to df3
Major_axis axis: 2013-01-01 00:00:00 to 2013-04-10 00:00:00
Minor_axis axis: A to E
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。