2017-03-16 185 views
1

我有一个面板stocks具有['volume'], ['30_Avg_Vol'] and ['20_Avg_Vol']作为轴掌握大熊猫面板布尔索引错误

stocks.Volume 
        AAPL  OPK 
Date        
010-01-11 115557365.0 130195.0 
2010-01-12 148614774.0 121245.0 
2010-01-13 151472335.0 47897.0 
2010-01-14 108288411.0 126539.0 
2010-01-15 148584065.0 175261.0 
2010-01-19 182501620.0 123318.0 
2010-01-20 153037892.0 100803.0 
2010-01-21 152038565.0 262285.0 
2010-01-22 220441872.0 114525.0 


stocks['30_Avg_Vol'] 
Date    AAPL   OPK 
2010-01-21   NaN   NaN 
2010-01-22   NaN   NaN 
2010-01-25 1.526774e+08 1.607402e+05 
2010-01-26 1.723086e+08 1.592968e+05 
2010-01-27 1.875047e+08 1.554605e+05 
2010-01-28 1.933864e+08 1.540021e+05 
2010-01-29 1.996023e+08 1.549712e+05 
2010-02-01 1.989956e+08 1.532240e+05 

stocks['20_Avg_Vol'] 
        AAPL   OPK 
Date       
2010-01-12   NaN   NaN 
2010-01-13   NaN   NaN 
2010-01-14   NaN   NaN 
2010-01-15 1.315716e+08 1.718937e+05 
2010-01-19 1.362016e+08 1.674777e+05 
2010-01-20 1.376046e+08 1.619215e+05 
2010-01-21 1.387149e+08 1.696418e+05 
2010-01-22 1.445526e+08 1.657049e+05 
2010-01-25 1.526774e+08 1.607402e+05 
2010-01-26 1.723086e+08 1.592968e+05 
2010-01-27 1.875047e+08 1.554605e+05 

我想裁板以下列方式

stocks[(stocks['Volume']> (1.5 * stocks['30_Avg_Vol']))|(stocks['Volume']> (1.5* stocks['20_Avg_Vol']))] 

无论中,成交量大于平均交易量30天或平均交易量20天的1.5倍。

,但我发现了以下错误:

raise ValueError('Cannot index with multidimensional key') 
ValueError: Cannot index with multidimensional key 

围绕这个办法吗?

谢谢。

回答

1

您有MultiIndex。要索引到MultiIndex,您必须成对指定您的密钥(或以三元组形式,等等)。

来解决这个问题最简单的办法是重置到一个单一的指标:

所以:

stocks[(stocks['Volume']> (1.5 * stocks['30_Avg_Vol']))|(stocks['Volume']> (1.5* stocks['20_Avg_Vol']))] 

变为:

_stocks = stocks.reset_index() 

_stocks[(_stocks['Volume']> (1.5 * _stocks['30_Avg_Vol']))|(_stocks['Volume']> (1.5* _stocks['20_Avg_Vol']))] 
+0

感谢您的答复。我无法测试代码,但会回复一次。 =) – Moondra

+0

所以,当我运行这个代码:'_stocks = stocks.reset_index()'我得到以下错误:'AttributeError:'面板'对象没有属性'reset_index' 下划线如果股票正面,那样做?谢谢。 – Moondra

+1

啊,你正在使用面板;对不起,我错过了你的总结。如果这不起作用,我实际上建议将'pandas'中的'pandas'做为'*',因为'pandas'' Panel'对象被弃用,IIRC将在下一个主要版本中完全删除('0.20 .0')。相反,请使用['xarray'](http://xarray.pydata.org/en/stable/),它旨在取代'pandas.Panel'。比照http://xarray.pydata.org/en/stable/indexing.html。这不是直接回答你的问题,虽然不幸... –