Условная сумма в Python между несколькими столбцами - PullRequest
0 голосов
/ 14 октября 2018

У меня есть следующий скрипт из более крупного анализа данных о ценных бумагах:

returns_columns = []

df_merged[ticker + '_returns'] = df_merged[ticker + '_close'].pct_change(periods=1)
returns_columns.append(ticker + '_returns')

df_merged['applicable_returns_sum'] = (df_merged[returns_columns] > df_merged['return_threshold']).sum(axis=1)

'return_threshold' - это полная серия чисел с плавающей точкой.

Мне удалось успешноСуммируйте каждую строку в массиве returns_columns, но не можете понять, как условно суммировать только числа в returns_columns, которые больше, чем res 'return_threshold' в этой строке.

Это похоже на проблему, аналогичную показанной здесь, Python Pandas считает и суммирует определенные условия , но я пытаюсь суммировать на основе изменяющегося условия в returns_columns.

Любая помощь будет высоко ценится, спасибо, как всегда!

РЕДАКТИРОВАТЬ: ДРУГОЙ ПОДХОД Это еще один подход, который я попробовал.В приведенном ниже сценарии есть ошибка, связанная с вводом ticker, хотя я думаю, что это необходимо, а затем выдает ошибку:

def compute_applicable_returns(row, ticker):
    if row[ticker + '_returns'] >= row['top_return']:
        return row[ticker + '_returns']
    else:
        return 0

df_merged['applicable_top_returns'] = df_merged[returns_columns].apply(compute_applicable_returns, axis=1)

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

ответил на вопрос так:

def compute_applicable_returns(row, ticker):
    if row[ticker + '_returns'] >= row['return_threshold']:
        return row[ticker + '_returns']
    else:
        return 0

for ticker in tickers:
    df_merged[ticker + '_applicable_returns'] = df_merged.apply(compute_applicable_returns, args=(ticker,), axis=1)
0 голосов
/ 14 октября 2018

Оператор [] для фрейма данных должен позволять вам фильтровать по выражению df > threshold и возвращать фрейм данных.Затем вы можете позвонить .sum() по этому номеру.

df[df > threshold].sum()

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