16

私が持っているデータフレーム:

            A   B   C 
2012-01-01  1   2   3 
2012-01-05  4   5   6 
2012-01-10  7   8   9 
2012-01-15  10  11  12 

私が今使っているもの:

date_after = dt.datetime( 2012, 1, 7 )
frame.ix[date_after:].ix[0:1]
Out[1]: 
            A  B  C
2012-01-10  7  8  9

これを行うより良い方法はありますか?.ix[0] の代わりに .ix[0:1] を指定する必要があるのは好きではありませんが、そうしないと、出力が DataFrame の単一行ではなく TimeSeries に変更されます。回転した TimeSeries を元の DataFrame の上に戻すのは難しいと思います。

なし.ix[0:1]:

frame.ix[date_after:].ix[0]
Out[1]: 
A    7
B    8
C    9
Name: 2012-01-10 00:00:00

ありがとう、

ジョン

4

3 に答える 3

31

インデックスを直接実行したい場合があります。

i = frame.index.searchsorted(date)
frame.ix[frame.index[i]]

少し冗長ですが、関数に入れることができます。あなたが得るのと同じくらい良い(O(log n)

于 2012-03-29T03:54:52.137 に答える
8

2012 年に Wes 自身が質問し、回答したにもかかわらず、これに答えずにはいられませんでした。はい、切り捨てを使用してください。

df.truncate(before='2012-01-07')
于 2015-12-17T04:46:05.597 に答える