有没有办法用scipy.signal代替循环来模拟下面的输出呢?
import pandas as pd
df_in = pd.DataFrame({'Generated':[13,8,7,6],'Consume':[8,10,20,5]})
print(df_in)
Generated Consume
0 13 8
1 8 10
2 7 20
3 6 5
df_in['balance'] = [5,3,0,1]其中13 -8等于余额5,5结存到下一行,5+8-10结转到下一行,3结转到下一行,3+7-10结转为负数,但不能结转为负。因此,下一行0进位+6-5 yeilds 1余额。
print(df_in)预期输出:
Generated Consume balance
0 13 8 5
1 8 10 3
2 7 20 0
3 6 5 1发布于 2019-06-16 18:28:16
如果不是要求在余额为正的情况下仅对进位进行加法运算,您可以对差值使用累加器。这个累加器可以使用lfilter实现,从递归方程y[n+1] = y[n] + x[n]获得b和a参数
x = df_in['Generated'] - df_in['Consume']
df_in['balance'] = scipy.signal.lfilter([1], [1,-1], x)不幸的是,只有在余额保持为正的情况下才添加进位,这会使过程变得非线性,scipy.signal.lfilter无法处理这一点。在这一点上,您将不得不求助于使用循环来处理特殊情况。
https://stackoverflow.com/questions/56615218
复制相似问题