【问题标题】:Excluding most recent day from rolling sum从滚动总和中排除最近一天
【发布时间】:2019-04-15 03:09:48
【问题描述】:

我有一个雨量数据的 pandas 数据框,摘录如下所示。 'Pcp' 是一天的总和,然后我用它来计算导致感兴趣的那一天的其他时间段(3 天到 28 天)的滚动累积降雨总量,使用:

df['Pcp_3day'] = df['Pcp'].rolling(3).sum()

我想要实现的是在感兴趣的日期前 n 天的滚动总数,但不包括感兴趣的日期。换句话说,目前,滚动总数是由第 0 天、-1 天、-2 天的降雨总数形成的,而我想排除第 0 天(感兴趣的那一天)并且滚动总数为 -1 天, -2, -3,即之前的三天。

我不确定这个类比是否非常清楚,但如果有任何建议,将不胜感激。

谢谢

                Pcp     Pcp_3day    Pcp_7day    Pcp_10day   Pcp_14day   Pcp_21day   Pcp_28day
date        
2017-12-04      8.382   19.304      21.082      40.132      40.132      42.418      71.374
2017-12-05      12.192  20.574      33.020      42.164      52.324      52.578      81.534
2017-12-06      1.016   21.590      33.020      34.290      53.340      53.594      82.550
2017-12-07      12.700  25.908      45.466      46.990      66.040      66.040      95
2017-12-08      5.080   18.796      50.292      51.816      71.120      71.120      88.900

【问题讨论】:

  • 当您明确提供数据结构时,它会帮助其他人。在这种情况下,它是一个 pandas DataFrame。
  • @eaydin 记录并编辑,谢谢。

标签: python pandas sum rolling-computation rolling-sum


【解决方案1】:

试试这个:

df['Pcp_3day'] = df['Pcp'].shift().rolling(3).sum()

【讨论】:

  • 这就是我喜欢stackoverflow的原因,谢谢@John
猜你喜欢
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 2020-05-14
  • 2016-03-31
  • 2010-11-17
相关资源
最近更新 更多