我是Python和Pandas的新手。現在,我也遇到過:Gobal變量但在while循環內而不在函數中
NameError:名字「價格」沒有定義
我知道那是因爲while循環。我是否需要將while循環放在函數容器中並使用return/yield?任何其他選項,以便價格變量可以達到?
請查收我的計劃的一部分:
fundspercentb = {}
for c in df.columns:
if c[1] == 'bid':
pass
else:
i = -1
while df[c][i] == np.nan:
i-=1
if df[c][i] != np.nan: continue
price=float(df[c][i]) # <----------------------------
ma20=df[c].tail(20).astype(float).mean()
movstd=df[c].tail(20).std()
upperband=ma20+(2*movstd)
lowerband=ma20-(2*movstd)
percentb=(price-lowerband)/(upperband-lowerband)*100 # <------
fundspercentb[c] = percentb
print fundspercent
爲什麼你有'pass'?使用'pass'的唯一原因是如果您想稍後編寫該代碼。如果在你的循環中,你只想在'not c [1] =='bid''時執行'else'代碼塊,那麼*這樣做*:'if c [1]!='bid':該代碼,你具備的,在最else'。 – Bakuriu