【发布时间】:2017-05-27 13:56:34
【问题描述】:
我正在使用 for 循环来更新 Numpy 数组,但它似乎不起作用。我做错了什么?
我的代码
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
对于第一个Print 命令,它显示了正确的值。
但是对于接下来的 2 个Print 命令,为什么它显示相同的值。我只更新dic_1 而不是dic。我做错了什么?
【问题讨论】:
-
它们是同一个对象,但名称不同。如果您正在更新 dic_1,那么您也在更新 dic。相反,您需要创建一个副本。如果他们持有不可变对象,
dic_1 = dic.copy()应该可以工作。 -
试过了,但结果和以前一样
标签: python pandas numpy for-loop