2013-07-12 2 views
2

Я хочу создать новую серию, в которой содержится самая низкая из (низкая в этот день)/(закрытие в предыдущий день). Таким образом, первым я фильтровать дни для каждого условия:Pandas: Как объединить временные ряды с дополнительными датами?

a=low['SPY'][low['SPY']<close['SPY'].shift(1)] 
b=close['SPY'].shift(1)[low['SPY']>=close['SPY'].shift(1)] 

Теперь и Ь оба имеют «дыры»:

a: 
2013-06-21 16:00:00 1577.70 
2013-06-24 16:00:00 1560.33 
2013-06-28 16:00:00 1601.06 
2013-07-02 16:00:00 1606.77 

b: 
2013-06-25 16:00:00 1573.09 
2013-06-26 16:00:00 1588.03 
2013-06-27 16:00:00 1603.26 
2013-07-01 16:00:00 1606.28 

Как сцепить а и б, так что я получить обратно один раз последовательно с правильный индекс?

Я пробовал pd.concat во всех вариантах (или создавал серию C с индексом orginial и слиял с ней), но он всегда просто добавляет и не сливается, как ожидалось.

Большое спасибо!

ответ

2

Почему не просто sort_index после выполнения добавления/конкат?

In [11]: a.append(b) # equivalent to pd.concat([a, b]) 
Out[11]: 
2013-06-21 16:00:00 1577.70 
2013-06-24 16:00:00 1560.33 
2013-06-28 16:00:00 1601.06 
2013-07-02 16:00:00 1606.77 
2013-06-25 16:00:00 1573.09 
2013-06-26 16:00:00 1588.03 
2013-06-27 16:00:00 1603.26 
2013-07-01 16:00:00 1606.28 
dtype: float64 

In [12]: a.append(b).sort_index() 
Out[12]: 
2013-06-21 16:00:00 1577.70 
2013-06-24 16:00:00 1560.33 
2013-06-25 16:00:00 1573.09 
2013-06-26 16:00:00 1588.03 
2013-06-27 16:00:00 1603.26 
2013-06-28 16:00:00 1601.06 
2013-07-01 16:00:00 1606.28 
2013-07-02 16:00:00 1606.77 
dtype: float64 

Для панд эффективности не сортирует по умолчанию, и нужно задать в явном виде.

+0

спасибо, я думаю, я был слепым! – jpdus

Смежные вопросы