我正在使用for循環來更新Numpy數組,但它似乎沒有工作。我究竟做錯了什麼?Python - 循環問題
我的代碼
import pandas as pd
import pandas_datareader as pdr
import datetime as dt
from dateutil.relativedelta import relativedelta
import matplotlib.finance as mf
import numpy as np
import scipy as sp
def pull_price(ticker):
df = pd.read_csv(ticker+'.csv')
df1=np.array(df['Adj Close'])
return df1
tickers=['^DJI','^GSPC','^IXIC','^GDAXI','^HSI','^FCHI','^N225']
dic={}
for i in tickers:
dic[i]=pull_price(i)
for i in tickers:
count = len(dic[i])
for j in range(0,count):
try:
dic[i][j] = float(dic[i][j])
except ValueError:
dic[i][j] = float(dic[i][j-1])
dic_1= dic
print(dic['^GSPC'][0])
for i in tickers:
count = len(dic_1[i])
for j in range(0,count):
dic_1[i][j] = np.log(dic_1[i][j])
print(dic_1['^GSPC'][0])
print(dic['^GSPC'][0])
我對3打印命令的輸出順序
411.410004
6.01959029389
6.01959029389
爲第1 Print
命令它顯示我正確的值。 但是對於接下來的2 Print
命令爲什麼顯示相同的值。我只更新dic_1
而不是dic
。我究竟做錯了什麼?
它們是具有不同名稱的相同對象。如果您正在更新dic_1,那麼您也正在更新dic。相反,你需要創建一個副本。如果他們持有不可變的對象,'dic_1 = dic.copy()'應該可以工作。 – ayhan
試過,但給了我同樣的結果 –