#python #dictionary #for-loop #subtraction
#python #словарь #for-цикл #вычитание
Вопрос:
Мне нужно преобразовать цикл for в набор функций, которые будут быстрее перебирать данные. Он циклически перебирает фрейм данных и вычитает значения. Я думал о сопоставлении фрейма данных, но для меня это не самая понятная концепция, и я мог бы воспользоваться любой предлагаемой помощью.
for nd in wnkd['days'].unique():
for ld in lps['level'].unique():
nmrtr = []
for ty in types:
try:
nmrtr.append((sum(wnkd.loc[(wnkd['level']== ld) amp; (wnkd['typs'] == ty) amp; (wnkd['data_set'] == 'rules'),'FRQ'].values)-(
sum(wnkd.loc[(wnkd['level']== ld) amp; (wnkd['typs']== ty ) amp; (wnkd['data_set'] == 'actual'), 'FRQ']))))
except (KeyError,IndexError) as e:
nmrtr.append(0)
print(nmrtr,ld)
nmrtr.append(ld)
nmrtr.append(nd)
Попытка / исключение на месте, потому что, если значения не существуют в этом разделе цикла for, они могут попасть в другой раздел. Например, когда ld равно 3, а тип — car, может не быть никаких значений, но может быть значение, когда ld равно 4, а тип — car. Цель состоит в том, чтобы циклически просматривать каждый раздел данных по дате недели (nd), затем по уровню (ld), затем по типу (ty), чтобы сравнить значения из 2 разных наборов данных. FRQ ссылается на частоту, которая была сгенерирована путем группировки исходных наборов данных. Также обратите внимание, что только потому, что actual имеет nd = 3/1 , level = 4 и type = car , это не означает, что правила будут иметь один и тот же тип. Правила будут иметь один и тот же nd и уровень, но тип может отличаться. Я решаю выяснить, как часто меняются типы.
Комментарии:
1. При использовании
map
всегда существует соответствие 1 к 1 между входными и выходными элементами. Но ваш цикл добавляет несколько элементов на каждой итерации, поэтому вы не можете использоватьmap()
.2. Внутри вычитается 2 значения, разве это не 1 к 1? Я не уверен, что мне нужно изменить, чтобы он соответствовал. Мне просто действительно нужно ускорить этот цикл.
3. Я говорю обо всех вызовах
nmrtr.append()
. Вы вызываете его несколько раз на каждой итерации.4.
map()
это не ускорит его значительно.5. Это словари или серия pandas?