为什么Pandas不以指定的日期开始分组周?

cclgggtu  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(109)

我想按周(星期日-星期六)对数据进行分组,并对该周的每一天进行求和。出于某种原因,Pandas并没有以我期望的方式分组。以下是从2023年2月12日星期日开始到2023年2月25日星期六结束的一些样本数据。我希望传入pd.Grouper(freq='W')pd.Grouper(freq='W-SUN'),但它不使用常规周,除非我传入freq='W-SAT'
这是怎么回事?

$ python
Python 3.8.12 | packaged by conda-forge | (default, Oct 12 2021, 21:50:56) 
[Clang 11.1.0 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> 
>>> S = pd.Series([1,2,3,70,2,3,4,5,6,10,20,4,9,1],
...               pd.DatetimeIndex(['2023-02-%d' % d for d in range(12,26)]))
>>> S
2023-02-12     1
2023-02-13     2
2023-02-14     3
2023-02-15    70
2023-02-16     2
2023-02-17     3
2023-02-18     4
2023-02-19     5
2023-02-20     6
2023-02-21    10
2023-02-22    20
2023-02-23     4
2023-02-24     9
2023-02-25     1
dtype: int64
>>> S.groupby(pd.Grouper(freq='W-SUN',origin='start_day')).sum()
2023-02-12     1
2023-02-19    89
2023-02-26    50
Freq: W-SUN, dtype: int64
>>> S.groupby(pd.Grouper(freq='W-SAT',origin='start_day')).sum()
2023-02-18    85
2023-02-25    55
Freq: W-SAT, dtype: int64
cu6pst1q

cu6pst1q1#

IIUC,功能按预期工作。为了简化约定,您传递的参数是您预计一周结束的日期。因此,对于星期日到星期六的一周,您确实需要W-SAT。在此指定。即使几周来它没有指定结束条件,对于以下锚点,它会指定:
W-SAT每周频率(星期六)
(B)Q(S)-DEC季度频率,每年12月结束。与“Q”相同
(B)Q(S)-JAN季度频率,1月结束
使用W-SAT会导致聚合在星期日开始,一直运行到星期六,以完成7天。

相关问题