2024-09-20 17:21:44 发布
网友
我需要按周分组,但是像这样的一周(一年的第一周)跨越了两年,2018年和2019年。在
通常,我会执行以下操作:
df.groupby([df.DATE.dt.year,df.DATE.dt.week]).sum()
这就导致了单周的产量表现为两个独立的星期。我确信我可以对IF语句使用暴力,但是我想知道在这一年的过渡期间,是否有一种更干净的方法来按周分组。在
或者只是使用resample
resample
df.set_index('Date').resample('W-SUN').Data.mean() Date 2018-12-30 1.000000 2019-01-06 1.833333 Freq: W-SUN, Name: Data, dtype: float64
您可以将日期转换为pandas Period对象,然后对其进行分组。在
df = pd.DataFrame( {'Date': pd.DatetimeIndex(start='2018-12-24', end='2019-01-05', freq='d'), 'Data': [1] * 8 + [2] * 5}) >>> df Date Data 0 2018-12-24 1 1 2018-12-25 1 2 2018-12-26 1 3 2018-12-27 1 4 2018-12-28 1 5 2018-12-29 1 6 2018-12-30 1 7 2018-12-31 1 8 2019-01-01 2 9 2019-01-02 2 10 2019-01-03 2 11 2019-01-04 2 12 2019-01-05 2 >>> (df .assign(period=pd.PeriodIndex(df['Date'], freq='W-Sun')) # Weekly periods ending Sundays. .groupby('period')['Data'].mean()) period 2018-12-24/2018-12-30 1.000000 2018-12-31/2019-01-06 1.833333 # (1 * 1 + 2 * 5) / 6 = 1.833 Freq: W-SUN, Name: Data, dtype: float64
注意,在上面的例子中,最后一个周期只有6天。在
或者只是使用
resample
您可以将日期转换为pandas Period对象,然后对其进行分组。在
注意,在上面的例子中,最后一个周期只有6天。在
相关问题 更多 >
编程相关推荐