Oto jeden ze sposobów, aby to zrobić, należy najpierw pobrać lokalizację całkowitą klucza indeksu poprzez 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
a następnie można użyć iloc
(aby uzyskać lokalizację Integer, kawałek po całkowitej lokalizacji):
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
Zobacz indexing section of the docs.
Nie jestem pewien, w jaki sposób skonfigurować DataFrame, ale to nie wygląda datetime Główna mnie. Oto jak mam DataFrame (z indeksem Timestamp):
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
Czy masz indeksu na każdy dzień lub są tam niektóre pominięte dzień? –
Na przykład są pominięte dni, weekendy i święta. – trbck
To pytanie może ci pomóc: [pandy czasowe pandy na datę +/- 2 dni robocze] (http://stackoverflow.com/questions/14092339/slice-pandas-timeseries-on-date-2-business-days) –