вывести на экран разницу значений индексов в цикле
Прошу помочь. Уровень изучения - начальный. Третий день не могу понять в чем я ошибаюсь при написании кода, второй раз прошла ранее изученные материалы, но ошибки не поняла своей. Без этого не могу пойти дальше.. До этого пропустила решение пары задач, потом вернулась и уже решила.
Задача такая:
- Список
campaign_weeksхранит номера недель, в которые проводились рекламные кампании. Они соответствуют индексам значений в спискахpaymentsиinstalls. Для каждой недели вcampaign_weeksпосчитайте разницу между числом установок (installs) в эту неделю и в предыдущую. Чтобы обратиться к значению предыдущей недели, вычтите из индекса единицу прямо в квадратных скобках. Результаты сохраните в спискеinstalls_from_ads, чтобы функцияprint()вывела их на экран. Вот такая подсказка и вроде я все сделала в соответствии с ней, но решение не верно.
Объявите переменную installs_from_ads и сохраните в ней пустой список. Затем напишите цикл for: для каждого элемента в списке campaign_weeks найдите разницу значений installs[...] и installs[... - 1] и добавьте результат в список installs_from_ads методом .append(). Вместо ... подставьте название переменной цикла.
import pandas
data = pandas.read_csv('app_stats.csv')
payments = list(data['payments']) # список с числом платежей
installs = list(data['installs']) # список с числом установок
campaign_weeks = [7, 9, 13, 15, 17, 19, 29, 31, 33, 45]
installs_from_ads=[]
for i in range(len(campaign_weeks)):
installs_from_ads.append(installs[i]-installs[i-1])
print(installs_from_ads)
Ответы (2 шт):
for i in range(1, len(campaign_weeks)):
иначе для первой недели вы получаете разницу с последней.
Нужно ли что-то делать для первой недели (допустим, installs[0]) вносить в список - в условии не определено
campaign_weeks = [7, 9, 13, 15, 17, 19, 29, 31, 33, 45]
installs_from_ads=[]
for i in range(len(campaign_weeks)):
installs_from_ads.append(installs[i]-installs[i-1])
Да, жалко я раньше не увидел этот вопрос. Суть проблемы действительно в том, что вы совсем не используете содержимое campaign_weeks, а нужно его использовать:
for i in campaign_weeks:
...
Хотя на более продвинутом уровне эта задача решается проще, примерно так:
installs_from_ads = data['installs'].diff().loc[campaign_weeks].to_list()