无法按 pandas 数据框中的时间戳编制索引

Can't index by timestamp in pandas dataframe

我拿了一个 excel sheet ,它有日期和一些值,我想将它们转换为 pandas 数据框和 select 只有在某些日期之间的行。

出于某种原因,我无法 select 按日期索引排行

Excel 文件中的原始数据

MCU                         
Timestamp   50D 10P1    10P2    10P3    10P6    10P9    10P12
12-Feb-15   25.17   5.88    5.92    5.98    6.18    6.23    6.33
11-Feb-15   25.9    6.05    6.09    6.15    6.28    6.31    6.39
10-Feb-15   26.38   5.94    6.05    6.15    6.33    6.39    6.46

代码

xls = pd.ExcelFile('e:/Data.xlsx')
vols = xls.parse(asset.upper()+'VOL',header=1)
vols.set_index('Timestamp',inplace=True)

set_index

之前的数据
      Timestamp    50D  10P1  10P2  10P3  10P6  10P9  10P12  25P1  25P2  \
0    2015-02-12  25.17  5.88  5.92  5.98  6.18  6.23   6.33  2.98  3.08   
1    2015-02-11  25.90  6.05  6.09  6.15  6.28  6.31   6.39  3.12  3.17   
2    2015-02-10  26.38  5.94  6.05  6.15  6.33  6.39   6.46  3.01  3.16  

set_index

之后的数据
              50D  10P1  10P2  10P3  10P6  10P9  10P12  25P1  25P2  25P3  \
Timestamp                                                                  
2015-02-12  25.17  5.88  5.92  5.98  6.18  6.23   6.33  2.98  3.08  3.21   
2015-02-11  25.90  6.05  6.09  6.15  6.28  6.31   6.39  3.12  3.17  3.32   
2015-02-10  26.38  5.94  6.05  6.15  6.33  6.39   6.46  3.01  3.16  3.31  

输出

>>> vols.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2015-02-12, ..., NaT]
Length: 1478, Freq: None, Timezone: None

>>> vols[date(2015,2,12)]
*** KeyError: datetime.date(2015, 2, 12)

我希望这不会失败,而且我应该能够 select 一系列日期。试了很多组合都没搞定

使用 datetime.date 实例尝试检索索引是行不通的,您只需要日期的字符串表示形式,例如'2015-02-12''2015/02/14'.

其次,vols[date(2015,2,12)] 实际上是在查看 DataFrame 的列标题,而不是索引。您可以改用 loc 来获取行索引标签。例如你可以写 vols.loc['2015-02-12']