Python/Pandas:For循环求和移动范围并附加到新列

2024-10-03 02:38:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python和熊猫还不太熟悉,所以请原谅我在这里提出的不知情的问题。在

我有一个数据帧(QReport),看起来像这样:

DATE            STATE       SALES
2010-12-01       AL          10
2010-12-02       AL          13
2010-12-03       AL          16
2010-12-04       AL          10
2010-12-05       AL          10
2010-12-06       AL          2
2010-12-07       AL          5 
2010-12-08       AL          5

我想创建一个七天销售总额列,它将七天的销售额部分相加,并将该总额添加到新的“7DTotal”列中。我一直试图通过for循环实现这一点,将x和y变量设置为0(零)和6个索引,我尝试在循环中每次运行时递增:

^{pr2}$

但是,这种方法不起作用,它为新添加的7DTotal列中的每一行返回相同的值。在

预期产出为:

DATE            STATE       SALES   7DTotal
2010-12-01       AL          10        0
2010-12-02       AL          13        0
2010-12-03       AL          16        0
2010-12-04       AL          10        0
2010-12-05       AL          10        0
2010-12-06       AL          2         0
2010-12-07       AL          5         66
2010-12-08       AL          5         61

提前感谢您的帮助!在


Tags: 数据方法fordatestatealsales销售额
2条回答

一个简单的解决方案是

7_day_list = []

for index in QReport.

    avg = np.mean(QReport.loc[index:index+7, 'SALES'])

    7_day_list.append(avg)

希望有帮助

您应该使用滚动总和:

QReport['7DTotal'] = pd.rolling_sum(QReport.SALES, 7).fillna(0)

或者

^{pr2}$

(列的前六个元素将未定义,fillna将用0填充它们。)

相关问题 更多 >