熊猫面板中的花式指数

时间:2017-02-22 15:05:26

标签: python pandas

我们有以下小组:

companies = ["GOOG", "YHOO", "AMZN", "MSFT", "AAPL"]
p = data.DataReader(name = companies, data_source="google", start = "2013-01-01", end = "2017-02-22")

我想提取"低"," MSFT"两个日期" 2013-01-02"和" 2013-01-08"。我使用了几个选项,其中一些是有效的,有些则没有。以下是这些方法:

  1. 使用.ix []方法
  2. p.ix["Low", [0,4], "MSFT"],结果是:

    Date
    2013-01-02    27.15
    2013-01-08    26.46
    Name: MSFT, dtype: float64
    

    所以它有效,完全没问题。

    1. 使用.iloc []方法
    2. p.iloc[2, [0,4], 3]它也有效。

      Date
      2013-01-02    27.15
      2013-01-08    26.46
      Name: MSFT, dtype: float64
      
      1. 再次使用.ix []方法,但方式不同
      2. p.ix["Low", ["2013-01-02", "2013-01-08"], "MSFT"]并返回奇怪的结果:

        Date
        2013-01-02   NaN
        2013-01-08   NaN
        Name: MSFT, dtype: float64
        
        1. 使用.loc []方法
        2. p.loc["Low", ["2013-01-02", "2013-01-08"], "MSFT"]这次出现错误

          KeyError: "None of [['2013-01-02', '2013-01-08']] are in the [index]"

          1和2是有效的,它非常简单。但是,我不明白在第3种方法中获取NaN值的原因以及第4种方法中的错误。

1 个答案:

答案 0 :(得分:0)

使用以下

In [116]: wp = pd.Panel(np.random.randn(2, 5, 4), items=['Low', 'High'],
.....:               major_axis=pd.date_range('1/1/2000', periods=5),
.....:               minor_axis=['A', 'B', 'C', 'D'])

记住这一点很好: .loc使用索引中的标签 .iloc在索引中使用整数定位 .ix尝试像.loc一样,但如果失败则回退到.iloc,所以我们只关注.ix版本 source

如果我wp.ix['Low']

               A         B         C         D
2000-01-01 -0.864402  0.559969  1.226582 -1.090447
2000-01-02  0.288341 -0.786711 -0.662960  0.613778
2000-01-03  1.712770  1.393537 -2.230170 -0.082778
2000-01-04 -1.297067  1.076110 -1.384226  1.824781
2000-01-05  1.268253 -2.185574  0.090986  0.464095

现在,如果要访问2000-01-01到2000-01-03的数据,则需要使用语法

wp.loc['Low','2000-01-01':'2000-01-03']

返回

                A         B         C         D
2000-01-01 -0.864402  0.559969  1.226582 -1.090447
2000-01-02  0.288341 -0.786711 -0.662960  0.613778
2000-01-03  1.712770  1.393537 -2.230170 -0.082778