Я написал функцию ниже, чтобы создать 3 столбца внутри панели (все данные). Цикл for предназначен для обновления их значения на основе расчета.Обновление столбцов в панели данных внутри панели без цикла?
Есть ли способ обновить эти столбцы для всех фреймов данных без использования цикла for?
def addAdjustedColumns(symbols, quotes):
new_quotes = quotes.copy()
# add 3 columns to all dataframes inside the panel
new_quotes = quotes.transpose(2, 0, 1)
new_quotes['AdjOpen'] = 0.
new_quotes['AdjHigh'] = 0.
new_quotes['AdjLow'] = 0.
new_quotes = new_quotes.transpose(1, 2, 0)
for symbol in symbols:
new_quotes[symbol].AdjOpen = new_quotes[symbol].Open * (new_quotes[symbol].AdjClose/new_quotes[symbol].Close)
new_quotes[symbol].AdjHigh = new_quotes[symbol].High * (new_quotes[symbol].AdjClose/new_quotes[symbol].Close)
new_quotes[symbol].AdjLow = new_quotes[symbol].Low * (new_quotes[symbol].AdjClose/new_quotes[symbol].Close)
return new_quotes
Спасибо,
JM
это все по сути, медленные операции, потому что вы делаете много небольших операций индексирования. вместо этого гораздо эффективнее либо построить панель непосредственно из многоуровневого dict или concat-кадров. если у вас много символов, тогда создание как нового (а не изменения) будет намного быстрее. – Jeff
Когда я тестировал только 2 символа, моя работа была быстрее, но затем я сделал это с несколькими символами, и ваше решение было быстрее. Благодарю. – jmatos