groupby 周 - 熊猫数据框

时间:2021-01-26 19:27:55

标签: python pandas dataframe group-by

我想从最后一个输入日起按周对 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周在同一行中

1 个答案:

答案 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