python - 如果数据中不存在每个日期,如何计算日期 python 中的移动总和?
问题描述
我正在尝试根据休息日计算 Python 中的移动总和,但是我的数据框中没有列出每个日期。在下面的示例中,cum sum 应说明数据框中缺少 2021-01-03 日期这一事实
import pandas as pd
df = pd.DataFrame({'date':['2021-01-01', '2021-01-02', '2021-01-04', '2021-01-05'],
'value':[1, 1, 1, 1]})
df_correct = pd.DataFrame({'date':['2021-01-01', '2021-01-02', '2021-01-04', '2021-01-05'],
'value':[1, 1, 1, 1],
'2_day_cum_sum':[1, 2, 1, 2]})
print(df_correct)
我知道如何使用 pandas 的滚动函数计算滚动总和,但我不知道如何解释丢失的日期。我目前的愿景是创建一个包含日期和其他变量的每个组合的数据框(不在这个基本示例中),然后将活动数据集合并到该数据框,这样我就可以有效地使用 pandas 的滚动功能。但是,我觉得存在更好的方法。有什么想法吗?
解决方案
我知道您提到了滚动功能,不确定您是否知道可以在滚动功能中指定日期窗口。让我们试试:
# ensure date is in right format
df['date'] = pd.to_datetime(df.date)
# set date as index
df = df.set_index('date')
# rolling sum with 2 days as window
df['2_day_cum_sum'] = df['value'].rolling('2d').sum()
# reset index
df = df.reset_index()
我能够获得您的预期输出,我认为这足以供您使用,除非您想在缺少日期时输入不同的值 - 例如,如果缺少日期,则将值设置为 5。如果是这样,那么我们将需要一个不同的解决方案
推荐阅读
- firebase - Vuex 状态变化不是被动的
- powerbi - MS Power BI 报告需要很长时间才能刷新
- python - 如何使用 MNIST 数据集(Python)实现 GRNN 算法
- php - Ubuntu PHP Laravel 将日志写入文件
- getstream-io - GetStream React 组件是否提供本地化?
- sql-server - 使用 SELECT 语句为变量分配多个值并使 SQL 查询动态工作
- javascript - 使用 jQuery 向 DOM 删除/添加 div 时选择下拉菜单和复选框冲突
- node.js - 无服务器 1.65.0 的部署返回错误 ECONNREFUSED 127.0.0.1:4567
- android - 在 Windows 上为 Android 设置 Dlib
- excel - 在 End Sub 之后第二次双击触发之前