python - python中的i循环慢
问题描述
我在优化 for i 循环时遇到了麻烦,该循环使用基于前一个结果的下一个结果的时序数据。
import pandas as pd
import numpy as np
df= pd.Series(range(1,1000000))
df=df.to_frame(name="CusUnits")
df['UpperBoundary'] = 10
df['LowerBoundary'] = -10
from progress.bar import Bar
import time
from tqdm import tqdm
from time import sleep
length=len(df)
df.loc[0, 'Hedged'] = df.loc[0, 'CusUnits']
for i in tqdm(range(1, length)):
if (df.loc[i, 'UpperBoundary'] > (df.loc[i-1, 'Hedged'] - df.loc[i, 'CusUnits']) > df.loc[i, 'LowerBoundary']): df.loc[i, 'Hedged'] = df.loc[i-1, 'Hedged']
else :df.loc[i, 'Hedged'] =df.loc[i-1, 'CusUnits']
解决方案
for i in tqdm(range(1, length)):
if (df.at[i, 'UpperBoundary'] > (df.at[i-1, 'Hedged'] - df.at[i, 'CusUnits']) > df.at[i, 'LowerBoundary']): df.at[i, 'Hedged'] = df.at[i-1, 'Hedged']
else :df.at[i, 'Hedged'] =df.at[i-1, 'CusUnits']
the replacement of loc with at solved many thanks for you comments
推荐阅读
- microcontroller - I2C, SCL 线低时 SDA 线高,地址 + R/W 字节之后
- python - Python中的KMP算法实现
- python - 使用 de Boor 算法的 B 样条导数
- git - 在自托管 GitLab 实例中创建新项目
- php - 如何使用 Laravel 使用 Eloquent ORM 对循环进行检查
- html - 如何修复移动兄弟姐妹的边距
- css - 如何在引导链接按钮中左对齐文本?
- javascript - 单台计算机上的 java 应用程序和 javascript 应用程序之间的高性能通信
- c++ - OpenGL) 阴影映射使对象看起来偏红
- python - 将字符串输入到熊猫数据框中时出错?