Pandas dataframe - 使用np.clip()设置boundaires并从列中的特定值中减去值

时间:2017-08-17 17:08:43

标签: python pandas numpy

我有一个pandas df和df['Battery capacity'] = np.clip(df['total_load'].cumsum() + 5200,-np.inf,5200)我计算了来自" total_load"的值使用来自" Battery_capacity"。

的值

enter image description here

我无法解决的问题是,例如在14:00:00"电池容量"是5200但是在15:00:00它并没有从5200减去-221,因为它减去了在后台加起来的值。我用np.clip()

将界限设置为5200

所以我想拥有的是:

time                total_load   battery capacity
2016-06-01 14:00:00   1980        5200
2016-06-01 15:00:00   -221        4979 (start subtracting from 5200) 
2016-06-01 16:00:00   -14.5       4964.5 

我如何将其实现到我的代码中?

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是np.clip是在np.cumsum之后计算的,所以当和达到时间14:00:00时,总和远大于5200,因此没有减法。

我认为循环可能是最简单的方法,但是其他人可能会提供更好的矢量化解决方案

val = 0
for index,row in df.iterrows():
    val = min(row['total_load']+val,5200)
    df.loc[index,'Battery capacity'] = val