対インデックスとパンダDATAFRAME日時スライシング:あなたはそれを完全日(すなわち2016年1月1日)を得たときに作品をスライスし私は次の操作を行うことができ、単一のインデックス付きデータフレーム付きマルチインデックス
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-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
OK動作するようには思えない、罰金が、部分的な日付のthats:
>>> 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#部分文字列インデックス上のdatetimeindex-part-of-a-multiindex) – jezrael