我有一个pandas df和df['Battery capacity'] = np.clip(df['total_load'].cumsum() + 5200,-np.inf,5200)
我计算了来自" total_load"的值使用来自" Battery_capacity"。
我无法解决的问题是,例如在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
我如何将其实现到我的代码中?
谢谢!
答案 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