Сначала конвертировать дату столбца to_datetime. Это будет группа по неделям, начиная с понедельника. Он выведет номер недели (но вы можете изменить это в
blockquote>df.groupby(['name', df['date'].dt.strftime('%W')])['quantity'].sum()
Выход:
name date apple 28 90 29 30 orange 28 20 30 40
Когда вы написали
for number in students:
, ваше намерение было: «Запустите этот блок кода students
раз, где students
- это значение, которое я только что ввел». Но на Python вы делаете передать в оператор for
должен быть каким-то итерируемым объектом. В этом случае то, что вы хотите, - это просто оператор range
. Это приведет к генерации списка чисел, и повторение через них позволит вашему циклу for
выполнить правильное количество раз:
for number in range(students):
# do stuff
Под капотом range
просто генерирует список последовательные номера:
>>> range(5)
[0, 1, 2, 3, 4]
В вашем случае не имеет значения, каковы числа; следующие два оператора for
будут делать то же самое:
for number in range(5):
for number in [1, 3, 97, 4, -32768]:
Но использование версии range
считается более идиоматичным и более удобно, если вам нужно изменить какой-то список в вашем цикле (что, вероятно, вам нужно будет сделать позже).
Цифры нельзя повторять. То, что вы, вероятно, ищете, - это функция range
, которая создаст последовательность чисел до нужного числа:
for number in range(1, students + 1):
Причина, по которой я добавил + 1 есть потому, что второй аргумент диапазона является исключительным.