如何使用Python Pandas获取特定日期时间索引后最接近的单行

时间:2012-03-26 18:11:05

标签: python pandas

我有DataFrame:

            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:1]而不是.ix [0],但如果我不指望输出更改为TimeSeries而不是DataFrame中的单行。我发现在原始DataFrame上使用旋转的TimeSeries更加困难。

没有.ix[0:1]

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

谢谢,

约翰

3 个答案:

答案 0 :(得分:29)

您可能希望直接执行索引:

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

触摸详细但你可以把它放在一个函数中。尽可能好(O(log n)

答案 1 :(得分:19)

无法回答这个问题,即使这个问题在2012年由Wes亲自提出并在2015年由ajsp回答。是的,除了'截断',您还可以使用get_loc选项' nearst'

df.iloc[df.index.get_loc(datetime.datetime(2016,02,02),method='nearest')]

答案 2 :(得分:4)

忍不住回答这个问题,尽管这个问题在2012年由Wes亲自提出并回答。是的,只需使用truncate。

df.truncate(before='2012-01-07')