python - Python:如何遍历行并根据前一行计算值
问题描述
我有截至 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]
})
这是它的外观:
现在,我想在这个数据框中添加一个“预测”列:
第 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']
推荐阅读
- javascript - 如何使 it.each 块描述在玩笑中动态化?
- windows - 安装 Spacy 时出错 ERROR:命令出错,退出状态为 1:
- python - 组 id 基于另一列的条件
- node.js - 使用 Docker 构建为生产创建 React 应用程序?
- c# - 错误:无法在 Linux 上加载文件或程序集
- greenplum - Greenplum 连接器在 ibm Datas 阶段给出主机名解析错误
- geode - Apache Geode Native Client 日志在启动本机客户端时显示连接池错误
- apache - 使用 ubuntu 托管 OSM 矢量切片服务器
- javascript - 为什么第二个点显示在错误的位置?
- python - 更新包时意外关闭anaconda提示后无法更新conda包