这是数据生成器代码以及grouby函数,用于按周对我的问题进行分组:

import pandas as pd
import numpy as np

np.random.seed(100)

pd.options.display.max_rows = 1000
df = pd.DataFrame(np.random.randint(0,10,size=(600, 2)), columns=list('AB'))
df['date'] = pd.DataFrame(pd.date_range(start='1/1/2018', end='8/23/2019'))

df['weekofyear'] = df.date.dt.weekofyear
df['year'] = df.date.dt.year

df1 = df.groupby(['year', 'weekofyear']).agg({'A':'sum', 'B':'mean'})


这是df的前10行:

    A   B   date    weekofyear  year
0   8   8   2018-01-01  1   2018
1   3   7   2018-01-02  1   2018
2   7   0   2018-01-03  1   2018
3   4   2   2018-01-04  1   2018
4   5   2   2018-01-05  1   2018
5   2   2   2018-01-06  1   2018
6   1   0   2018-01-07  1   2018
7   8   4   2018-01-08  2   2018
8   0   9   2018-01-09  2   2018
9   6   2   2018-01-10  2   2018
10  4   1   2018-01-11  2   2018


这是df1的前10行:

year      weekofyear   A     B
2018      1           31    3.375000
          2           30    4.285714
          3           26    4.142857
          4           37    3.142857
          5           19    6.142857
          6           34    4.142857
          7           30    4.142857
          8           43    4.571429
          9           35    5.142857
          10          24    4.000000


但是df1中的第一行(对应于df的前7天)显示A列的累计值不正确(**显示31,这是不正确的,应为30 **)。


  8 + 3 + 7 + 4 + 5 + 2 + 1 = 30
  
  8 + 3 + 7 + 4 + 5 + 2 + 1!= 31

最佳答案

有一个问题,它也可能与2018-12-31一起行,因为ISO week date

print (df[df['weekofyear'] == 1])

     A  B       date  weekofyear  year
0    8  8 2018-01-01           1  2018
1    3  7 2018-01-02           1  2018
2    7  0 2018-01-03           1  2018
3    4  2 2018-01-04           1  2018
4    5  2 2018-01-05           1  2018
5    2  2 2018-01-06           1  2018
6    1  0 2018-01-07           1  2018
364  1  6 2018-12-31           1  2018
365  5  5 2019-01-01           1  2019
366  2  0 2019-01-02           1  2019
367  9  3 2019-01-03           1  2019
368  4  7 2019-01-04           1  2019
369  4  7 2019-01-05           1  2019
370  9  4 2019-01-06           1  2019

关于python - 当按周分组时,结果很奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52269623/

10-12 23:12