我在優化使用時間序列資料的 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']
uj5u.com熱心網友回復:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362033.html
