gpt4 book ai didi

python - 沿短轴延伸 Pandas 面板框架

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:25 25 4
gpt4 key购买 nike

我想在 pandas 中沿着一个短轴扩展一个面板数据框架。我开始创建 DataFramedic 以生成面板。

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']

然后我遇到一个错误,说“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

关于python - 沿短轴延伸 Pandas 面板框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15364050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com