Pandas Dataframe 重采样周,从一年的第一天开始
Pandas Dataframe resample week, starting first day of the year
我有一个包含每小时数据的数据框,我想获得一年中每周的最大值,所以我使用重采样按周对数据进行分组
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
有没有办法从一年的第一天开始计算 pandas 数据框的周数?
一个快速的补救方法是,给你一年的数据,你可以先按天分组,然后再以 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
找到一年的开始日,例如假设今天是星期五,然后您可以指定一个 anchoring suffix 来重新采样,以计算从一年的第一天开始的周数:
weeks = data.resample("W-FRI").max()
我有一个包含每小时数据的数据框,我想获得一年中每周的最大值,所以我使用重采样按周对数据进行分组
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
有没有办法从一年的第一天开始计算 pandas 数据框的周数?
一个快速的补救方法是,给你一年的数据,你可以先按天分组,然后再以 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
找到一年的开始日,例如假设今天是星期五,然后您可以指定一个 anchoring suffix 来重新采样,以计算从一年的第一天开始的周数:
weeks = data.resample("W-FRI").max()