python - 基于日期时间值(缺少日期)在数据框中进行计算,而不用空日期填充数据框

标签 python pandas datetime missing-data

我有一个类似于下面的数据框,我想计算 value 的总和过去 7 天的列。问题是不一定每天都有一行。

df = pd.DataFrame({
    'value': [2,3,7,14],
    'date': ['10/20/2005','10/22/2005','10/25/2005','10/27/2005']
})

df['date'] = pd.to_datetime(df['date'])
df
value   date
    2   2005-10-20
    3   2005-10-22
    7   2005-10-25
    14  2005-10-27
我想要的是类似的东西
 df['value'].sum('Last 7 days')
 26
我发现的问题的解决方案总是使用缺少的日期填充 df,使用 .asfreq().reindex() .不幸的是,这对我来说不是一个选择,因为我有太多的类,每个类都用 df 表示,就像上面的那样。因此,用缺失的日期填充 df 会创建成千上万的额外行。
有没有办法使用pd.Timedelta() (或类似),我可以在哪里将丢失的天数视为零?

最佳答案

滚动将此智能内置到基于日期时间的列的函数中:

df.rolling('7d', on='date').sum()
请注意,10/27 和 10/20 相隔 8 天而不是 7 天 :)
如果你想把它放到另一列:
df['sum'] = df.rolling('7d', on='date').sum()['value']
如果您只想要最终值:
df.rolling('7d', on='date').sum()['value'].iloc[-1]

关于python - 基于日期时间值(缺少日期)在数据框中进行计算,而不用空日期填充数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64392107/

相关文章:

python - 在数据框中选择时间窗口

python - Pandas:获取列中有效后续帧的第一个和最后一个索引

javascript - 网络日期的国际化

javascript - 使用 JavaScript 获取当前日期/时间

c# - 在 C# 中编写等效的 IsDate()?

python - 数半金字塔 Python

Python 记录到配置文件中初始化的 MemoryHandler

python - 如何从 "year","date","month","time"列生成unix时间列,最好使用python的pandas模块

python - AWS Lambda - time.time() 返回未定义

python - 使用 Python 的 isinstance