【发布时间】:2018-01-26 23:32:15
【问题描述】:
我有一个大的 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
基本上,我试图记录产品 (UPC) 的销售在接下来的 7 天价格发生变化后的反应。我想创建一个新列 ['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
困难在于如何在我的数据中设置日期。有时(例如 UPC 35)日期不会超过 7 天。所以我希望它默认为下一个最近的日期,或者有多少日期(如果少于 7 天)。
这是我尝试过的: 我将日期设置为日期时间,并且正在考虑通过 .days 方法计算天数。 这就是我正在考虑设置代码的方式(草稿):
x = df.loc[df['Price_Change'] == 'True']
for x in df:
df['Reaction'] = sum(df.Unit_Sales[1day :8days])
有没有更简单的方法来做到这一点,也许没有 for 循环?
【问题讨论】:
-
您能否更清楚地解释一下您是如何获得预期输出的?
-
是的,很抱歉没有更清楚。 24 是通过将第 1 行到第 4 行的单位销售额总和计算得出的,这在我想要的 7 天日期范围内。同样,15 是通过将第 7 行到第 9 行的单位销售额相加计算得出的。
-
我正在计算价格变化后每个 UPC 的单位销售额总和,最多 7 天的窗口