Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 规范化面板(将所有值除以第一个切片)_Python_Pandas_Panel_Divide_Normalize - Fatal编程技术网

Python 规范化面板(将所有值除以第一个切片)

Python 规范化面板(将所有值除以第一个切片),python,pandas,panel,divide,normalize,Python,Pandas,Panel,Divide,Normalize,我很难将熊猫“数据”面板正常化,比如: [23]中的:数据 出[23]: 尺寸:6(项目)x 252(长轴)x 4(短轴) 项目轴:打开到调整关闭 长轴:2011-01-03 00:00:00至2011-12-30 00:00:00 短轴:从AAPL到XOM 基本上,我想将所有值除以另一个面板,该面板只包含原始面板的第一个“切片”(所有“项目”和“短轴”的第一个值): [25]中的:数据[:,:1,:] 出[25]: 尺寸:6(项目)x 1(长轴)x 4(短轴) 项目轴:打开到调整关闭 长轴:2

我很难将熊猫“数据”面板正常化,比如:

[23]中的
:数据
出[23]:
尺寸:6(项目)x 252(长轴)x 4(短轴)
项目轴:打开到调整关闭
长轴:2011-01-03 00:00:00至2011-12-30 00:00:00
短轴:从AAPL到XOM

基本上,我想将所有值除以另一个面板,该面板只包含原始面板的第一个“切片”(所有“项目”和“短轴”的第一个值):

[25]中的
:数据[:,:1,:]
出[25]:
尺寸:6(项目)x 1(长轴)x 4(短轴)
项目轴:打开到调整关闭
长轴:2011-01-03 00:00:00至2011-01-03 00:00:00
短轴:从AAPL到XOM

结果应该是一个与原始面板大小相同的面板,所有值除以相应的第一个值(第一个日期)

谢谢和问候


PD:我已经尝试过了。应用和。按照其他帖子进行划分,但找不到方法使其与此配置一起工作(除以面板的一部分);使用简单的标量除法,两种方法都可以很好地工作。

这是我关于StackOverflow的第一个答案,希望这会有所帮助。我遇到了同样的问题,但我使用的不是pandas panel对象,而是带有多索引的Dataframe对象。您应该能够通过以下方式获得所需的效果:将您的数据框与较小的数据框合并,其中只包含每个选定股票的第一个日期

这里有一些伪代码

假设您的完整数据帧是'df',具有由两列组成的多索引['ticker','period']。在该数据帧中有一列['price']

这是你可以做你想做的事的方法

df_slice = df[df.reset_index()['period'] == '2017-01-01']
df_merged = pd.merge(df.reset_index(), df_slice, how='inner', on='ticker')
df_merged['price_normalized'] = df_merged.price_x/df_merged.price_y

我希望这有帮助

这是我关于StackOverflow的第一个答案,希望这会有所帮助。我遇到了同样的问题,但我使用的不是pandas panel对象,而是带有多索引的Dataframe对象。您应该能够通过以下方式获得所需的效果:将您的数据框与较小的数据框合并,其中只包含每个选定股票的第一个日期

这里有一些伪代码

假设您的完整数据帧是'df',具有由两列组成的多索引['ticker','period']。在该数据帧中有一列['price']

这是你可以做你想做的事的方法

df_slice = df[df.reset_index()['period'] == '2017-01-01']
df_merged = pd.merge(df.reset_index(), df_slice, how='inner', on='ticker')
df_merged['price_normalized'] = df_merged.price_x/df_merged.price_y
我希望这有帮助