从一年的第一天开始对Pandas Dataframe进行每周重新采样

时间:2019-05-13 09:59:30

标签: python pandas dataframe resampling week-number

我有一个包含每小时数据的数据框,我想获取一年中每个星期的最大值,所以我使用重采样按周对数据进行分组

weeks = data.resample("W").max()

问题是,每周最大值是从一年的第一天开始计算的,而我希望它是从一年的第一天开始计算的。

我得到以下结果,您可以注意到有53周,最后一周是在下一年计算的,而数据中不存在2017年

Date        dots       
2016-01-03  0.647786
2016-01-10  0.917071
2016-01-17  0.667857
2016-01-24  0.669286
2016-01-31  0.645357


Date        dots                
2016-12-04  0.646786
2016-12-11  0.857714
2016-12-18  0.670000
2016-12-25  0.674571
2017-01-01  0.654571

是否有一种方法可以从一年的第一天开始计算熊猫数据框的星期?

2 个答案:

答案 0 :(得分:1)

一种快速的补救方法是,根据您一年内的数据,您可以先按天分组,然后再按7天一组:

new_df = (df.resample("D", on='Date').dots
            .max().reset_index()
         )

new_df.groupby(new_df.index//7).agg({'Date': 'min', 'dots': 'max'})

new_df.head()

输出:

    Date        dots
0   2016-01-01  0.996387
1   2016-01-08  0.999775
2   2016-01-15  0.997612
3   2016-01-22  0.979376
4   2016-01-29  0.998240
5   2016-02-05  0.995030
6   2016-02-12  0.987500

和尾巴:

    Date        dots
48  2016-12-02  0.999910
49  2016-12-09  0.992910
50  2016-12-16  0.996877
51  2016-12-23  0.992986
52  2016-12-30  0.960348

答案 1 :(得分:1)

查找一年的开始日期,例如,假设是星期五,然后可以指定anchoring suffix重采样以计算从一年的第一天开始的星期: weeks = data.resample("W-FRI").max()