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