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

Python 基于日期时间值(缺少日期)在数据框中进行计算,而不使用空日期填充数据框,python,pandas,datetime,missing-data,Python,Pandas,Datetime,Missing Data,我有一个类似于下面的数据框,我想计算过去七天值列的总和。问题是,不一定每天都有争吵 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

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

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
我发现问题的解决方案总是使用
.asfreq()
.reindex()
将缺少的日期填入df。不幸的是,这对我来说不是一个选项,因为我有太多的类,每个类都以类似上面的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]

你想按周分组还是按过去七天的滚动窗口分组?太好了!非常感谢你!这正是我一直在寻找的。这节省了这么多时间。很高兴它起作用了。如果它确实解决了你的问题,那么考虑未来用户可以更容易地找到他们需要的东西。是否有一个文档,比如“7D”/'1W’/'1M’,熊猫识别为DATEIMIT单元?有一个表在页面上超过30%-40%。搜索“日期偏移”。值得注意的是,它们并不总是在所有环境下都有效。