我拍了一张有日期和一些值的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)
我希望这不会失败,而且我应该能够选择一个日期范围。尝试了很多组合但没有得到。
使用datetime.date
实例尝试检索索引将不起作用,您只需要日期的字符串表示形式即可,例如'2015-02-12'
或'2015/02/14'
。
其次,vols[date(2015,2,12)]
实际上是在查看DataFrame的列标题,而不是索引。您可以loc
用来获取行索引标签。例如你可以写vols.loc['2015-02-12']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句