對於單索引的數據幀,我可以做到以下幾點:熊貓數據框中日期時間切片與指數多指標VS
df2 = DataFrame(data={'data': [1,2,3]},
index=Index([dt(2016,1,1),
dt(2016,1,2),
dt(2016,2,1)]))
>>> df2['2016-01 : '2016-01']
data
2016-01-01 1
2016-01-02 2
>>> df2['2016-01-01' : '2016-01-01']
data
2016-01-01 1
日期時間分片的作品,當你給它一個完整的一天(即2016年1月1日),它當你給它一個部分日期時也是有效的,比如僅僅是年份和月份(2016-01)。所有這些都很好,但是當你引入一個多重索引時,它只適用於完整的日期。該部分日期切片似乎不工作了
df = DataFrame(data={'data': [1, 2, 3]},
index=MultiIndex.from_tuples([(dt(2016, 1, 1), 2),
(dt(2016, 1, 1), 3),
(dt(2016, 1, 2), 2)],
names=['date', 'val']))
>>> df['2016-01-01 : '2016-01-02']
data
date val
2016-01-01 2 1
3 2
2016-01-02 2 3
確定,多數民衆贊成罰款,但部分日期:
>>> df['2016-01' : '2016-01']
File "pandas/index.pyx", line 134, in pandas.index.IndexEngine.get_loc (pandas/index.c:3824)
File "pandas/index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas/index.c:3704)
File "pandas/hashtable.pyx", line 686, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12280)
File "pandas/hashtable.pyx", line 694, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12231)
KeyError: '2016-01'
(我縮短回溯)。
任何想法,如果這是可能的?這是一個錯誤?有沒有辦法做我想做的事情,而不必訴諸於類似:
df.loc[(df.index.get_level_values('date') >= start_date) &
(df.index.get_level_values('date') <= end_date)]
任何提示,意見,建議等最感激!我嘗試了很多其他的東西無濟於事!
我認爲在'0.18.0'版本中它不起作用,但是在'0.18.1'版本中可以實現 - [見](https://pandas-docs.github.io/pandas-docs- travis/whatsnew.html#partial-string-indexing-on-datetimeindex-when-part-of-a-multiindex) – jezrael