列的熊猫求和

时间:2019-05-30 19:41:07

标签: pandas

让我们说我有这样的数据

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)"]

此引发错误的“系列”对象没有属性“收集”。

我如何求和,然后使用滞后来减去?

2 个答案:

答案 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