Управление файлом CSV с помощью Pandas: определение значения в столбце и использование данных из других столбцов той же строки - PullRequest
0 голосов
/ 13 июня 2018

Используя Pandas, я создал два столбца в дополнение к столбцам OHLC в файле CSV.Вот как выглядит фрейм данных:

              Date   Close      ...          Return  bullishSignal
Symbol                          ...                               
SPY     2010-01-01  111.44      ...             NaN          False
SPY     2010-01-04  113.33      ...             NaN          False
SPY     2010-01-25  109.77      ...        0.017582          False
SPY     2010-01-26  109.31      ...       -0.000915          False
SPY     2010-01-27  109.83      ...       -0.000546           True
SPY     2010-01-28  108.57      ...        0.006816          False
SPY     2010-01-29  107.39      ...        0.022721          False

Моя цель - рассчитать двухдневный доход от даты (день 0), когда возникает бычий сигнал: (Закрыть (день 2) - Открыть (день)1)) / Открытый (День 1).Есть ли способ, которым я могу сделать это?

1 Ответ

0 голосов
/ 13 июня 2018

Перейти к пандам.Затем вы можете транспонировать строку-1 с помощью команды .shift(1) и строку + 1 с помощью команды .shift(-1).

   x1                   # Original df
0   0
1   1 
2   2
3   3
4   4 

df.x2 = df.x1.shift(1)  # Shift down

   x1  x2
0   0 NaN
1   1   0
2   2   1
3   3   2
4   4   3


df.x2 = df.x1.shift(-1)  # Shift up

   x1  x2
0   0   1
1   1   2
2   2   3
3   3   4
4   4   NaN

Применяя shift(), вы получаете все соответствующие значения в одной строке, а затем просто можетеприменять операции по столбцам:

from __future__ import division
df['Close_Next_Day']  = df['Close'].shift(-1)
df = df[df.bullishSignal == True] # Filter to bullish 
df['2dayReturn_bullish'] = (df['Close_Next_Day'] - df['Open']) / df['Open'])

Вы можете сделать то же самое, используя функцию процентного изменения панд.

...