Группа и сумма по неделям - PullRequest
0 голосов
/ 28 мая 2020

У меня есть фрейм данных, в котором столбцы по дням в этом формате:

a    b    c     01/01/2020  01/02/2020  01/03/2020 ...
1000 2000 3000  2           5           7
.
.
. 

Это просто произвольные значения. Я хочу суммировать столбцы даты и сгруппировать их по неделям, например week_1, week_2,... и т. Д. И т. Д. В приведенном выше примере это будет выглядеть так:

a    b    c     week_1...
1000 2000 3000  14
.
.
. 

Есть ли чистый способ сделать это для столбцов? Я знаю, что могу просуммировать все столбцы, выбрав столбцы даты и суммируя их по оси, но я не уверен, как это делать в неделю. Любая помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Можно сделать:

# move `a`, `b`, `c` out of columns
df = df.set_index(['a','b','c'])

# convert columns to datetime
df.columns = pd.to_datetime(df.columns)

# groupby sum:
(df.groupby(df.columns.week, axis=1)
   .sum() 
   .add_prefix('week_')
   .reset_index()
)

Вывод:

      a     b     c   week_1
0  1000  2000  3000       14
1 голос
/ 28 мая 2020

попробуйте .stack или .melt, чтобы поместить столбцы в строки и dt.week, чтобы получить номер недели. затем выполните groupby. Вот сообщение для номера недели: преобразование даты pandas в номер недели

...