У меня есть два набора данных, которые выглядят следующим образом:Python панд «фильтр» временные ряды для торговых дней только
То, что я хотел бы сделать, это отфильтровать неторговые дни на «data». Я предполагаю, что это будет сравнивать data.index.date каждой строки с data.index.date of trading_days, а затем возвращать строку, если есть совпадение. Если нет совпадения, то это не торговый день, и строка не возвращается. Это эффективно отфильтровывает набор данных неторговых дней.
Однако, переходя по строкам здесь, чтобы проверить, равны ли два data.index.dates с помощью функции apply() для возврата строки, неэффективны - я чувствую, что есть более эффективный способ сделать это, поскольку Я сделаю это на 180-битной строке данных.
Есть ли какая-то «слияние» или «присоединиться», как:
data.join(trading_days)
, который фильтрует только для дат где date.index.date матчей? Мне нужно все это получить на минутном уровне (как показано в «data»), но просто отфильтровать даты, не связанные с торговлей. Спасибо за вашу помощь!
UPDATE, чтобы включать значения (пожалуйста, дайте мне знать, если есть лучший способ, чтобы вставить их):
In[5]: data.head(30).values
Out[6]:
array([[ 438.9, 438.9, 438.9, 438.9, 0. ],
[ 438.9, 438.9, 438.7, 438.7, 31. ],
[ 438.6, 438.6, 438.6, 438.6, 7. ],
[ 438.4, 438.7, 438.4, 438.4, 4. ],
[ 438.4, 438.4, 438.3, 438.3, 4. ],
[ 438.2, 438.2, 438.2, 438.2, 1. ],
[ 438.2, 438.2, 438.2, 438.2, 0. ],
[ 438.2, 438.2, 438.2, 438.2, 1. ],
[ 438.2, 438.2, 438.2, 438.2, 0. ],
[ 438.1, 438.1, 438.1, 438.1, 3. ],
[ 438. , 438. , 437.9, 438. , 6. ],
[ 438. , 438.2, 438. , 438. , 8. ],
[ 438.2, 438.2, 438.1, 438.1, 6. ],
[ 438.1, 438.1, 438.1, 438.1, 4. ],
[ 438.1, 438.1, 438.1, 438.1, 0. ],
[ 438.3, 438.3, 438.3, 438.3, 1. ],
[ 438.3, 438.3, 438.3, 438.3, 0. ],
[ 438.3, 438.3, 438.3, 438.3, 0. ],
[ 438.1, 438.1, 438.1, 438.1, 1. ],
[ 438. , 438. , 437.9, 437.9, 54. ],
[ 437.8, 437.8, 437.8, 437.8, 10. ],
[ 437.8, 437.8, 437.8, 437.8, 1. ],
[ 437.8, 437.8, 437.8, 437.8, 6. ],
[ 437.8, 437.8, 437.8, 437.8, 0. ],
[ 437.9, 438. , 437.9, 438. , 12. ],
[ 437.9, 438. , 437.9, 438. , 0. ],
[ 437.9, 438. , 437.9, 438. , 0. ],
[ 437.9, 438. , 437.9, 438. , 0. ],
[ 437.9, 437.9, 437.9, 437.9, 1. ],
[ 437.9, 437.9, 437.8, 437.8, 4. ]])
А вот временные метки:
In[10]: data.head(30).index.values
Out[11]:
array(['2005-01-02T13:59:00.000000000-0500',
'2005-01-02T14:00:00.000000000-0500',
'2005-01-02T14:01:00.000000000-0500',
'2005-01-02T14:02:00.000000000-0500',
'2005-01-02T14:03:00.000000000-0500',
'2005-01-02T14:04:00.000000000-0500',
'2005-01-02T14:05:00.000000000-0500',
'2005-01-02T14:06:00.000000000-0500',
'2005-01-02T14:07:00.000000000-0500',
'2005-01-02T14:08:00.000000000-0500',
'2005-01-02T14:09:00.000000000-0500',
'2005-01-02T14:10:00.000000000-0500',
'2005-01-02T14:11:00.000000000-0500',
'2005-01-02T14:12:00.000000000-0500',
'2005-01-02T14:13:00.000000000-0500',
'2005-01-02T14:14:00.000000000-0500',
'2005-01-02T14:15:00.000000000-0500',
'2005-01-02T14:16:00.000000000-0500',
'2005-01-02T14:17:00.000000000-0500',
'2005-01-02T14:18:00.000000000-0500',
'2005-01-02T14:19:00.000000000-0500',
'2005-01-02T14:20:00.000000000-0500',
'2005-01-02T14:21:00.000000000-0500',
'2005-01-02T14:22:00.000000000-0500',
'2005-01-02T14:23:00.000000000-0500',
'2005-01-02T14:24:00.000000000-0500',
'2005-01-02T14:25:00.000000000-0500',
'2005-01-02T14:26:00.000000000-0500',
'2005-01-02T14:27:00.000000000-0500',
'2005-01-02T14:28:00.000000000-0500'], dtype='datetime64[ns]')
И в trading_days для чтения .csv здесь: http://pastebin.com/5N01Gi5V
ВТОРАЯ UPDATE:
Можете ли вы разместить образцы данных в виде простого текста? –