首页 > 解决方案 > 在 pandas 中通过重新采样和偏移将每日数据汇总到每周

问题描述

我有想要汇总到每周的每日 covid 数据。问题是我希望我的星期从周日到周六,但默认是周一到周日。我尝试使用 loffset,但它只是更改日期而不是我的数据,而且它正在添加数据集中不存在的日期。

代码:

logic = {'iso_code'  : 'first',
         'new_cases'  : 'sum',
         'new_deaths'  : 'sum',
         'icu_patients'   : 'sum',
         'hosp_patients' : 'sum',
         'people_vaccinated': 'sum'} #it's possible to have 'first', 'max','last', etc

offset = pd.offsets.DateOffset(-1)

df_covid_weekly = df_covid_file.resample('W', on='date', label = 'right', loffset=offset).apply(logic).reset_index()

原始数据片段: 在此处输入图像描述

目前的结果: 在此处输入图像描述

预期结果: 在此处输入图像描述

标签: pandasoffsetpandas-resample

解决方案


使用锚定偏移

df_covid_file.resample('W-SAT', on='date', label = 'right')

偏移量W相当于W-SUN(“星期结束于星期日”)并且W-SAT是“星期结束于星期六”,依此类推。

如果你想要一个可以使用的偏移对象pd.offsets.Week(weekday=5),它相当于W-SAT. 偏移字符串是这些对象的别名。有时使用对象而不是字符串对应物可以使代码参数化更容易一些。


推荐阅读