无法在pandas数据帧中按时间戳索引

Del*_*ore 6 python indexing excel dataframe pandas

我拿了一张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
Run Code Online (Sandbox Code Playgroud)

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

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  
Run Code Online (Sandbox Code Playgroud)

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  
Run Code Online (Sandbox Code Playgroud)

产量

>>> 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)
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*ley 6

使用datetime.date实例来尝试检索索引将不起作用,您只需要日期的字符串表示,例如'2015-02-12''2015/02/14'.

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