无法通过pandas数据帧中的时间戳进行索引

时间:2015-02-14 18:43:48

标签: python excel pandas dataframe indexing

我带了一张excel表,其中包含日期和一些值,并希望将它们转换为pandas数据帧,并仅选择某些日期之间的行。

由于某种原因,我无法选择按日期索引的行

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)

我希望这不会失败,而且我应该能够选择一系列日期。尝试了这么多组合,但没有得到它。

1 个答案:

答案 0 :(得分:6)

使用datetime.date实例尝试检索索引无法正常工作,您只需要一个字符串表示日期,例如'2015-02-12''2015/02/14'

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