2017-02-06 3 views
1

次のコードスニペットを試しました。インデックスが階層的であるときにPandas timeseriesインデックス作成に失敗する

In [84]: 
from datetime import datetime 
from dateutil.parser import parse 
​ 
rng = [datetime(2017,1,13), datetime(2017,1,14), datetime(2017,2,15), datetime(2017,2,16)] 
​ 
s = Series([1,2,3,4], index=rng) 
​s['2017/1'] 

Out[84]: 
2017-01-13 1 
2017-01-14 2 
dtype: int64 

私が期待したように、JANに属するアイテムだけをs [2017/1]のようにJANまで指定するだけで正常に取得できました。

次の時間が、私は、階層インデックスを代わりに使用した上記のコードのビットの拡張バージョンを試みた: TypeError例外:unorderableタイプ

from datetime import datetime 
from dateutil.parser import parse 

rng1 = [datetime(2017,1,1), datetime(2017,1,1), datetime(2017,2,1), datetime(2017,2,1)] 
rng2 = [datetime(2017,1,13), datetime(2017,1,14), datetime(2017,2,15), datetime(2017,2,16)] 

midx = pd.MultiIndex.from_arrays([rng1, rng2]) 

s = Series([1,2,3,4], index=midx) 

s['2017/1'] 

上記のコードを、しかし、エラーが生成されます。 int()> slice()

何か助けてもらえますか?

答えて

1

もっと複雑なようです。私のためにその後

rng1 = [pd.Timestamp(2017,5,1), pd.Timestamp(2017,5,1), 
     pd.Timestamp(2017,6,1), pd.Timestamp(2017,6,1)] 
rng2 = pd.date_range('2017-01-13', periods=2).tolist() + 
     pd.date_range('2017-02-15', periods=2).tolist() 
s = pd.Series([1,2,3,4], index=[rng1, rng2]) 
print (s) 
2017-05-01 2017-01-13 1 
      2017-01-14 2 
2017-06-01 2017-02-15 3 
      2017-02-16 4 

作品:

Partial string indexing on datetimeindex when part of a multiindexを使用すると、もしそうならpandas 0.18.

DataFrameで実装されている

print (s.to_frame().loc[pd.IndexSlice[:, '2017/1'],:].squeeze()) 
2017-05-01 2017-01-13 1 
      2017-01-14 2 
Name: 0, dtype: int64 

print (s.loc['2017/6']) 
2017-06-01 2017-02-15 3 
      2017-02-16 4 
dtype: int64 

しかし、この戻り空Series

print (s.loc[pd.IndexSlice[:, '2017/2']]) 
Series([], dtype: int64 
+0

@jezraelありがとうございました! .loc()を使うだけで完璧に動作します!インデックスに時間情報が含まれていても、マルチインデックスのシリーズはTimeSeriesオブジェクトとして扱われなくなったようです。そうであれば、時間列を使用して行にインデックスを付けることは、正当な操作でした。 以前は.ix()を使ってみましたが、ix()によるインデックス作成は失敗しました。これはまだ私にとっては不思議です。 – Royalblue

+0

私の答えが役に立ったら、[accept()を忘れないでください。['ix'](http://pandas-docs.github.io/pandas-docs-travis/whatsnew.html#deprecate-ix) ](http://meta.stackexchange.com/a/5235/295067)それ。ありがとう。 – jezrael

関連する問題