Python:如何迭代行并基于前一行计算值
我有截至2020年7月的销售数据,并希望使用恢复率预测未来3个月。 这是数据帧:Python:如何迭代行并基于前一行计算值,python,pandas,Python,Pandas,我有截至2020年7月的销售数据,并希望使用恢复率预测未来3个月。 这是数据帧: test = pd.DataFrame({'Country':['USA','USA','USA','USA','USA'], 'Month':[6,7,8,9,10], 'Sales':[100,200,0,0,0], 'Recovery':[0,1,1.5,2.5,3] }) 这就是它的样子: 现在,
test = pd.DataFrame({'Country':['USA','USA','USA','USA','USA'],
'Month':[6,7,8,9,10],
'Sales':[100,200,0,0,0],
'Recovery':[0,1,1.5,2.5,3]
})
这就是它的样子:
现在,我想在这个数据框中添加一个“预测”列:
test = pd.DataFrame({'Country':['USA','USA','USA','USA','USA'],
'Month':[6,7,8,9,10],
'Sales':[100,200,0,0,0],
'Recovery':[0,1,1.5,2.5,3]
})
第3行的第一个值300基本上是(200*1.5/1)
。这将是我们的基础值,因此下一个值,即500基本上是(300*2.5/1.5)
,依此类推。
从第3行开始,我如何迭代每一行?我尝试使用shift(),但无法对行进行迭代。您可以这样做:
import pandas as pd
test = pd.DataFrame({'Country':['USA','USA','USA','USA','USA'],
'Month':[6,7,8,9,10],
'Sales':[100,200,0,0,0],
'Recovery':[0,1,1.5,2.5,3]
})
test['Prediction'] = test['Sales']
for i in range(1, len(test)):
#prevent division by zero
if test.loc[i-1, 'Recovery'] != 0:
test.loc[i, 'Prediction'] = test.loc[i-1, 'Prediction'] * test.loc[i, 'Recovery'] / test.loc[i-1, 'Recovery']
upvote复制粘贴示例!使用
shift()
显示代码,因为这是我的第一个想法。但问题是,您不仅需要来自销售
和恢复
的先前值,还需要来自预测
的值,这可能会带来问题。非常感谢!这太完美了!:)很高兴我能帮忙。:)快乐编码!