我对Python和Pandas相当陌生,所以请原谅我在这里提出的不知情的问题。
我有一个数据帧(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
我想创建一个 7 天销售总额列,该列对 7 天的销售切片求和,并将该总额添加到新的"7DTotal"列中。我一直在尝试通过 for 循环来解决这个问题,将 x 和 y 变量设置为 0(零)和 6 个索引,我尝试通过循环每次运行递增:
x = 0
y = 6
for i in QReport:
QReport['7DTotal'] = sum(QReport['SALES'][x:y])
x = x + 1
y = y + 1
但是,此方法不起作用,并且为新添加的 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
提前感谢任何帮助!
您应该使用滚动总和:
QReport['7DTotal'] = pd.rolling_sum(QReport.SALES, 7).fillna(0)
或
# Suggested by a commenter
QReport['7DTotal'] = QReport.rolling(7).sum().fillna(0)
(列的前六个元素将未定义,fillna
用 0 填充它们。
一个简单的解决方案是
7_day_list = []
for index in QReport.
avg = np.mean(QReport.loc[index:index+7, 'SALES'])
7_day_list.append(avg)
希望有帮助