Dưới đây là một cách để làm điều đó, đầu tiên lấy vị trí số nguyên của khóa index qua get_loc
:
In [15]: t = pd.Timestamp("2013-02-27 00:00:00+00:00")
In [16]: df1.index.get_loc(t)
Out[16]: 3
Và sau đó bạn có thể sử dụng iloc
(để có được vị trí số nguyên, hoặc lát theo vị trí số nguyên):
In [17]: loc = df1.index.get_loc(t)
In [18]: df.iloc[loc - 1]
Out[18]:
Date 2013-02-26 00:00:00
-0.15
Name: 2, Dtype: object
In [19]: df1.iloc[slice(max(0, loc-3), min(loc, len(df)))]
# the min and max feel slightly hacky (!) but needed incase it's within top or bottom 3
Out[19]:
Date
2013-02-22 0.280001
2013-02-25 0.109999
2013-02-26 -0.150000
Xem indexing section of the docs.
Tôi không chắc chắn cách bạn thiết lập DataFrame của mình, nhưng điều đó không giống như chỉ mục thời gian cho tôi. Đây là cách tôi nhận DataFrame (với chỉ mục Dấu thời gian):
In [11]: df = pd.read_clipboard(sep='\s\s+', header=None, parse_dates=[0], names=['Date', None])
In [12]: df
Out[12]:
Date
0 2013-02-22 00:00:00 0.280001
1 2013-02-25 00:00:00 0.109999
2 2013-02-26 00:00:00 -0.150000
3 2013-02-27 00:00:00 0.130001
4 2013-02-28 00:00:00 0.139999
In [13]: df1 = df.set_index('Date')
In [14]: df1
Out[14]:
Date
2013-02-22 0.280001
2013-02-25 0.109999
2013-02-26 -0.150000
2013-02-27 0.130001
2013-02-28 0.139999
Nguồn
2013-03-01 20:02:24
Bạn có chỉ mục cho mỗi ngày hoặc có một số ngày bỏ qua không? –
Ví dụ: có một số ngày bỏ qua, ngày nghỉ cuối tuần và ngày lễ. – trbck
Câu hỏi này có thể giúp bạn: [slice pandas timeseries vào ngày +/- 2 ngày làm việc] (http://stackoverflow.com/questions/14092339/slice-pandas-timeseries-on-date-2-business-days) –