我想从最后一个输入日起按周对 Pandas 数据框进行分组,并计算每列/每周的总和。
(1 周 : monday -> sunday, 如果最后一个条目是 tuesday,那么这个星期只由 monday 和 tuesday 数据组成,而不是今天 - 7 天)
df:
a b c d e
2019-01-01 1 2 5 0 1
...
2020-01-25 2 3 6 1 0
2020-01-26 1 2 3 4 5
预期输出:
week a b c d e
104 9 8 8 8 7
...
1 7 8 8 8 9
代码:
df = df.rename_axis('date').reset_index()
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df.groupby(DF.date.dt.strftime('%W')).sum()
问题:不是我想要的周数和每年的第n周在同一行中
答案 0 :(得分:1)
尝试提取iso日历(年-周-日),然后分组:
s = dt.index.isocalendar()
dt.groupby([s.year, s.week]).sum()
你会得到这样的东西:
a b c d e
year week
2019 1 18 33 31 26 25
2 36 31 25 28 31
3 33 22 44 22 29
4 36 36 35 33 31
5 27 30 26 31 36