python - 如何做一个“循环年”的移动平均线
问题描述
我正在对某个数字进行移动平均,在一个排序期间
new_df = pd.DataFrame()
for lid in working_df.location_id.unique():
temp = working_df[working_df.location_id == lid].sort_values(['year','week']).reset_index()
temp["smoothed_fig"] = temp.fig.rolling(window=4, center=False, min_periods=1).mean()
new_df = new_df.append(temp)
在这种情况下,第 1 周将等于自身,第 2 周等于第 1 周和第 2 周的平均值,依此类推,最大值为 4 周的平均值。问题是,现在我需要将第 1 周设为第 1 周本身和同年第 50、51、52 周以及第 2 周 - 1、2、51、52 周的 4 周平均值,以及第 3 周 - 1,2,3,52 (df 中不存在前一年,但后年存在。我也对下一年执行此程序不感兴趣)。
我考虑通过使用感兴趣的年份的数字在前一年(因为它不存在如上所述)添加几周来做到这一点,然后运行循环。但是我不确定这是否是最好的方法(自己创建这些行),以及最好的方法是什么。我还想知道如何将我需要的几周的 .mean() 分配给我需要的单元格 - 考虑一个 .groupby().mean() 条件只需要我需要的几周,但我不是确定它是否可能以及如果可能的话如何去做。
如果第一种方法更好,我想知道如何在我只需要 2 周平均值和一条线实施的情况下实施第二种方法。
重要说明,因为它用于与下一年进行比较,并且下一年有 53 周,而问题年份没有,所以问题年份的第 53 周等于同年的第 52 周,因此任何答案都带有循环方法应该考虑到这一点。
有什么建议么?
解决方案
推荐阅读
- c# - asp.net core 操作中参数的映射命名约定
- c# - EWS 托管 API - 删除附加邮件中的附件
- reactjs - 如果多个电子邮件与同一帐户关联,则获取登录用户的电子邮件地址
- swift - 无法覆盖 prefersHomeIndicatorAutoHidden() 方法
- ruby-on-rails - will_paginate 在帖子分页时删除组中的帖子
- c# - 使用 MVVM 更改按钮 BackgroundColor
- php - 在 Wordpress 自定义中增加主题允许的可用字体类型的数量
- c# - 使用代码而不是 XAML 更改 NavigationView TintColor
- sql - 使用 CHARINDEX 将 NVARCHAR DATE 转换为 DATETIME
- c# - 如何在 JSON 中格式化状态代码,应用范围