Я все еще учусь python и хотел бы попросить вашей помощи по следующей проблеме:
У меня есть CSV-файл с ежедневными данными, и я ищу решение для суммирования его по календарю недель. Поэтому для приведенных ниже данных макета у меня есть строки, растянутые на 2 недели (14 неделя (текущая неделя) и 13 неделя (прошедшая неделя)). Теперь мне нужно найти способ группировать строки по календарной неделе, определить, к какому году они относятся, и рассчитать сумму и среднее значение за неделю. В примере ввода файла есть только два разных идентификатора. Однако в реальном файле данных я ожидаю гораздо большего.
input.csv
id date activeMembers
1 2020-03-30 10
2 2020-03-30 1
1 2020-03-29 5
2 2020-03-29 6
1 2020-03-28 0
2 2020-03-28 15
1 2020-03-27 32
2 2020-03-27 10
1 2020-03-26 9
2 2020-03-26 3
1 2020-03-25 0
2 2020-03-25 0
1 2020-03-24 0
2 2020-03-24 65
1 2020-03-23 22
2 2020-03-23 12
...
требуемый output.csv
id week WeeklyActiveMembersSum WeeklyAverageActiveMembers
1 202014 10 1.4
2 202014 1 0.1
1 202013 68 9.7
2 202013 111 15.9
моя цель:
import pandas as pd
df = pd.read_csv('path/to/my/input.csv')
Здесь мне нужно сгруппировать по столбцу «id» + «date» (за календарную неделю - не уверен, если это возможно) и создать столбец «week» с номером недели, а затем суммировать значения «activeMembers» для конкретной недели, сохраняя как «WeeklyActiveMembersSum» столбец в моем выходном файле и, наконец, рассчитать WeeklyAverageActiveMembers для конкретной недели. Я экспериментировал с параметрами groupby и isin, но пока не повезло ... мне бы пришлось go с чем-то похожим на это:
df.groupby('id', as_index=False).agg({'date':'max',
'activeMembers':'sum'}
и, наконец, сохранить все как output.csv:
df.to_csv('path/to/my/output.csv', index=False)
Заранее спасибо!