按周分组和求和
Posted
技术标签:
【中文标题】按周分组和求和【英文标题】:Group and sum by week 【发布时间】:2020-09-16 03:38:33 【问题描述】:我有一个数据框,其中的列按天按这种格式显示:
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
.
.
.
有没有一种干净的方法来处理列?我知道我可以通过选择日期列并将它们在轴上求和来对所有列求和,但我不确定每周如何进行。任何帮助表示赞赏!
【问题讨论】:
您可能需要融合数据框,创建一个新列来指示它们所在的组,然后进行旋转和求和 【参考方案1】:你可以这样做:
# 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
【讨论】:
【参考方案2】:尝试.stack
或.melt
将列放在行上,并尝试dt.week
获取周数。然后做一个groupby
。这是周号的帖子:converting a pandas date to week number
【讨论】:
以上是关于按周分组和求和的主要内容,如果未能解决你的问题,请参考以下文章