让我们说我有这样的数据
df = pd.DataFrame({"MONTHS":[1,2,3,4,5,6], "METRIC":[430,584,648,571,610,535]})
df = pd.DataFrame({“ MONTHS”:[1,2,3,4,5,6],“ METRIC”:[430,584,648,571,610,535]}) 我想做的就是找到指标列的总和= 3378
MONTHS NEW_METRIC
0 3378
1 3378
2 2948
3 2794
4 2730
5 2807
6 2768
因此,这里基本上创建了一个新行,添加了0,并且相应的新指标是总和,对于值1,它也是新指标的总和,但是从month = 2开始,它应该减去指标的滞后值(3378-430 ),并且类似地持续3个月,直到结束为止(3378-584)。 第一步,我想将总和存储在失败的结果中
sum_METRIC = df.agg({"METRIC":"sum"}).collect()[0]
result = sum_METRIC["sum(METRIC)"]
此引发错误的“系列”对象没有属性“收集”。
我如何求和,然后使用滞后来减去?
答案 0 :(得分:3)
您可以将METRIC减去所得的总和:
In [11]: df["METRIC"].sum() - df["METRIC"].reindex(np.arange(0, 7)).shift(2).fillna(0)
Out[11]:
0 3378.0
1 3378.0
2 2948.0
3 2794.0
4 2730.0
5 2807.0
6 2768.0
Name: METRIC, dtype: float64
答案 1 :(得分:0)
使用
df['New']=df["METRIC"].sum() - np.array([0,0]+df["METRIC"].tolist())[:len(df)]
df
Out[307]:
MONTHS METRIC New
0 1 430 3378
1 2 584 3378
2 3 648 2948
3 4 571 2794
4 5 610 2730
5 6 535 2807