Я потянул pandas DataFrames из файлов HDF5 и делаю анализ на них. По какой-то причине, индекс одного из моих DataFrames переживает, казалось бы, случайное преобразование типа после применения фильтра:Wierd Pandas DataFrame Тип преобразования индекса
(Pdb) ORD_ticks
Codes Price Size
Time
2015-02-12 11:35:28-05:00 OC 148.200 0
2015-02-12 14:51:25-05:00 OC 148.870 0
2015-02-12 14:55:21-05:00 OC 146.550 0
2015-02-12 14:55:57-05:00 OC 148.230 0
2015-02-12 14:58:27-05:00 OC 148.542 0
2015-02-12 15:01:28-05:00 OC 148.200 0
2015-02-12 15:07:32-05:00 OC 148.400 0
... ... ... ...
2015-05-19 11:35:14-04:00 OC 152.000 0
2015-05-19 14:51:26-04:00 OC 151.980 0
2015-05-19 14:55:21-04:00 OC 151.500 0
2015-05-19 14:55:56-04:00 OC 151.800 0
2015-05-19 14:58:32-04:00 OC 151.966 0
2015-05-19 15:01:32-04:00 OC 152.110 0
2015-05-19 15:07:39-04:00 OC 152.000 0
[462 rows x 3 columns]
(Pdb) type(ORD_ticks.index)
<class 'pandas.tseries.index.DatetimeIndex'>
Я тогда применить следующий фильтр для ORD_ticks
получить ORD_prices
:
ORD_prices = ORD_ticks.ix[indicator.index.map(lambda t: ORD_ticks.index.asof(t)).tolist()].groupby(level=0).last()
После это, ORD_prices
выглядит следующим образом:
(Pdb) ORD_prices
Codes Price Size
1.423772e+18 OC 148.40 0
1.423858e+18 OC 148.29 0
1.424204e+18 OC 146.15 0
1.424290e+18 OC 146.51 0
1.424376e+18 OC 146.22 0
1.424463e+18 OC 145.08 0
1.424722e+18 OC 147.72 0
... ... ... ...
1.431371e+18 OC 149.95 0
1.431458e+18 OC 145.58 0
1.431544e+18 OC 145.22 0
1.431630e+18 OC 148.01 0
1.431717e+18 OC 148.91 0
1.431976e+18 OC 148.89 0
1.432062e+18 OC 152.00 0
[63 rows x 3 columns]
(Pdb) type(ORD_prices.index)
<class 'pandas.core.index.Float64Index'>
как ни странно, я делаю это точно такую же операцию в течение приблизительно 1 00 различных наборов данных, и это происходит только для этого! Что происходит?
Это indicator
:
(Pdb) indicator
Empty DataFrame
Columns: []
Index: [2015-02-09 15:30:00-05:00, 2015-02-10 15:30:00-05:00, 2015-02-11 15:30:0
0-05:00, 2015-02-12 15:30:00-05:00, 2015-02-13 15:30:00-05:00, 2015-02-17 15:30:
00-05:00, 2015-02-18 15:30:00-05:00, 2015-02-19 15:30:00-05:00, 2015-02-20 15:30
:00-05:00, 2015-02-23 15:30:00-05:00, 2015-02-24 15:30:00-05:00, 2015-02-25 15:3
0:00-05:00, 2015-02-26 15:30:00-05:00, 2015-02-27 15:30:00-05:00, 2015-03-02 15:
30:00-05:00, 2015-03-03 15:30:00-05:00, 2015-03-04 15:30:00-05:00, 2015-03-05 15
:30:00-05:00, 2015-03-06 15:30:00-05:00, 2015-03-09 15:30:00-04:00, 2015-03-10 1
5:30:00-04:00, 2015-03-11 15:30:00-04:00, 2015-03-12 15:30:00-04:00, 2015-03-13
15:30:00-04:00, 2015-03-16 15:30:00-04:00, 2015-03-17 15:30:00-04:00, 2015-03-18
15:30:00-04:00, 2015-03-19 15:30:00-04:00, 2015-03-20 15:30:00-04:00, 2015-03-2
3 15:30:00-04:00, 2015-03-24 15:30:00-04:00, 2015-03-25 15:30:00-04:00, 2015-03-
26 15:30:00-04:00, 2015-03-27 15:30:00-04:00, 2015-03-30 15:30:00-04:00, 2015-03
-31 15:30:00-04:00, 2015-04-01 15:30:00-04:00, 2015-04-07 15:30:00-04:00, 2015-0
4-08 15:30:00-04:00, 2015-04-09 15:30:00-04:00, 2015-04-10 15:30:00-04:00, 2015-
04-13 15:30:00-04:00, 2015-04-14 15:30:00-04:00, 2015-04-15 15:30:00-04:00, 2015
-04-16 15:30:00-04:00, 2015-04-17 15:30:00-04:00, 2015-04-20 15:30:00-04:00, 201
5-04-21 15:30:00-04:00, 2015-04-22 15:30:00-04:00, 2015-04-23 15:30:00-04:00, 20
15-04-24 15:30:00-04:00, 2015-04-27 15:30:00-04:00, 2015-04-28 15:30:00-04:00, 2
015-04-29 15:30:00-04:00, 2015-05-04 15:30:00-04:00, 2015-05-05 15:30:00-04:00,
2015-05-06 15:30:00-04:00, 2015-05-07 15:30:00-04:00, 2015-05-08 15:30:00-04:00,
2015-05-11 15:30:00-04:00, 2015-05-12 15:30:00-04:00, 2015-05-13 15:30:00-04:00
, 2015-05-14 15:30:00-04:00, 2015-05-15 15:30:00-04:00, 2015-05-18 15:30:00-04:0
0, 2015-05-19 15:30:00-04:00]
Что здесь делает фильтр? может быть 'resample' может быть полезным? – Zero
У меня есть список меток времени и хочу получить строки непосредственно перед этими метками времени, поэтому я использую 'asof' – baconwichsand
, вам нужно показать, что' 'indicator'' равно – Jeff