如何在特定日期范围内对熊猫列DataFrame中的某些值求和

Han*_*ana 5 python dataframe pandas

我有一个看起来像这样的大型DataFrame:df =

    UPC   Unit_Sales  Price   Price_Change  Date 
 0   22          15    1.99         NaN     2017-10-10
 1   22          7     2.19         True    2017-10-12
 2   22          6     2.19         NaN     2017-10-13
 3   22          7     1.99         True    2017-10-16
 4   22          4     1.99         NaN     2017-10-17
 5   35          15    3.99         NaN     2017-10-09
 6   35          17    3.99         NaN     2017-10-11
 7   35          5     4.29         True    2017-10-13
 8   35          8     4.29         NaN     2017-10-15
 9   35          2     4.29         NaN     2017-10-15
Run Code Online (Sandbox Code Playgroud)

基本上,我试图记录在接下来的7天价格变化后产品(UPC)的销售情况如何。我想创建一个新列['Reaction'],该列记录自价格更改之日起以及以后7天的单位销售额总和。请记住,有时UPC的价格变化超过2个,因此我希望每个价格变化的总和都不同。所以我想看看这个:

    UPC   Unit_Sales  Price   Price_Change  Date        Reaction
 0   22          15    1.99         NaN     2017-10-10      NaN
 1   22          7     2.19         True    2017-10-12      13   
 2   22          6     2.19         NaN     2017-10-13      NaN
 3   22          7     1.99         True    2017-10-16      11
 4   22          4     1.99         NaN     2017-10-19      NaN
 5   35          15    3.99         NaN     2017-10-09      NaN
 6   35          17    3.99         NaN     2017-10-11      NaN
 7   35          5     4.29         True    2017-10-13       15
 8   35          8     4.29         NaN     2017-10-15      NaN
 9   35          2     4.29         NaN     2017-10-18      NaN
Run Code Online (Sandbox Code Playgroud)

困难的是如何在我的数据中设置日期。有时(例如UPC 35)日期不超过7天。因此,我希望它默认为下一个最近的日期,或者默认为下一个最近的日期(如果少于7天)。

这是我尝试过的方法:我将日期设置为日期时间,并考虑通过.days方法对天数进行计数。这就是我考虑设置代码(草稿)的方式:

  x = df.loc[df['Price_Change'] == 'True']
  for x in df: 
       df['Reaction'] = sum(df.Unit_Sales[1day :8days])
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法可以做到这一点,也许没有for循环?