Выполнение функции со значениями столбцов в зависимости от местоположения индекса - PullRequest
0 голосов
/ 22 мая 2019

У меня есть датафрейм с 3 столбцами;['close', 'BUY', 'SELL'].Столбцы 'BUY' и 'SELL' являются логическими значениями и указывают позиции в индексах, где покупать и продавать - они разбросаны по многим строкам - около 3000. Мне удалось найти индексы, где эти логические значения истинны (1), используя:

returns[returns.BUY == 1]

Я хотел бы иметь возможность найти n-ую индексную точку на основе этих логических положений, а затем применить функцию к значениям столбца 'close', которые соответствуют индексным точкам n и n + n.

Спасибо!

Need a function that would only apply if the conditionals in column 'BUY' are true (1)

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Вы почти достигли цели, просто добавьте имя столбца к вашему срезу и примените your_function

returns.loc[returns.BUY == 1, 'close'].apply(your_function)
0 голосов
/ 22 мая 2019

Вы можете найти индекс с помощью

returns[returns.BUY == 1].index.values.astype(int)

Редактировать: Не уверен, правильно ли я вас понимаю.Вы можете попытаться создать индекс + n с помощью

for i in range(1, len(df) - n):
    df.loc[i, 'index+n'] = df.loc[i+n, 'index']

И затем вы можете использовать функцию apply, чтобы использовать любые условия, которые вы хотели бы использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...