2012-03-20 11 views
7

私はpandas.DateRangeオブジェクトでインデックスされたpandas.DataFrame df1を持っています。パンダのdatetimeインデックスを持つDataFramesの便利なスライシング

d1d2をdatetimesとして使用すると、なぜdf[d1:d2]が機能しないのですか。このスライスはどのように取得できますか?

df.truncate(before=d1, after=d2) 

それはあなたの元dfを変更しないであろうと切り捨て1を返します。

ロエル

答えて

9

これは動作します:

In [25]: df.ix[d1:d2] 
Out[25]: 
        A   B   C   D 
2000-01-10 1.149815 0.686696 -1.230991 -1.610557 
2000-01-11 -1.296118 -0.172950 -0.603887 0.383690 
2000-01-12 -1.034574 -0.523238 0.626968 0.471755 
2000-01-13 -0.193280 1.857499 -0.046383 0.849935 
2000-01-14 -1.043492 -0.820525 0.868685 -0.773050 
2000-01-17 -1.622019 -0.363992 1.207590 0.577290 

参照第一原理df[d1:d2]http://pandas.pydata.org/pandas-docs/stable/indexing.html#advanced-indexing-with-labels

それはシリーズの場合と同様に動作するはずですが:

In [27]: df['A'][d1:d2] 
Out[27]: 
2000-01-10 1.149815 
2000-01-11 -1.296118 
2000-01-12 -1.034574 
2000-01-13 -0.193280 
2000-01-14 -1.043492 
2000-01-17 -1.622019 
Name: A 

ここでの問題の作成:https://github.com/pydata/pandas/issues/946

7

truncate方法を試してみてください。ドキュメントから

Function truncate a sorted DataFrame/Series before and/or after 
some particular dates. 

Parameters 
---------- 
before : date 
    Truncate before date 
after : date 
    Truncate after date 

Returns 
------- 
truncated : type of caller 
+0

あなたは、このためのソースにリンクすることはできますか?私はhttp://pandas.pydata.org/pandas-docs/stable/timeseries.html#daterange-is-a-valid-indexにあり、私は切り捨て関数を見つけられませんでした。 – Paragon

+0

ありがとう、ありがとう。もっと便利なdf [d1:d2]がうまくいかない理由はありますか? – saroele

+0

@Paragon:現在のドキュメント(v0.7.2)のtruncateの説明へのリンクです:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.truncate.html?highlight= truncate#pandas.DataFrame.truncate – saroele

関連する問題