Python 按周分组求和

Python 按周分组求和,python,python-3.x,pandas,group-by,sum,Python,Python 3.x,Pandas,Group By,Sum,我有一个数据框,其中列按天以这种格式显示: a b c 01/01/2020 01/02/2020 01/03/2020 ... 1000 2000 3000 2 5 7 . . . 这些只是任意值。我想要的是对日期列求和,并按周对它们进行分组,如week\u 1、week\u 2、等等。因此,对于上面的示例,它看起来像: a b c week_1... 1000 2000 3000 14 . . .

我有一个数据框,其中列按天以这种格式显示:

a    b    c     01/01/2020  01/02/2020  01/03/2020 ...
1000 2000 3000  2           5           7
.
.
. 
这些只是任意值。我想要的是对日期列求和,并按周对它们进行分组,如
week\u 1、week\u 2、
等等。因此,对于上面的示例,它看起来像:

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

有没有一种干净的方法来处理列?我知道我可以通过选择日期列并在轴上求和来求和所有列,但我不确定每周如何做。感谢您的帮助

尝试
.stack
.melt
将列放到行上,然后
dt.week
获取周数。然后执行
groupby
。这是一篇关于周数的帖子:

尝试
.stack
.melt
将列放到行上,然后
dt.week
获取周数。然后执行
groupby
。这是一篇关于周号的帖子:

你可以做:

# 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
你可以做:

# 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

您可能需要融化数据帧,创建一个新列,指示它们所属的组,然后透视和求和。您可能需要融化数据帧,创建一个新列,指示它们所属的组,然后透视和求和