【发布时间】:2022-01-16 11:56:34
【问题描述】:
我想打印数据直到 list_3 结束。但是,无论我如何尝试,我都只得到了 list_3 的最后一个结果。这是我的代码:
import FinanceDataReader as fdr
import numpy as np
from numpy import NaN
import pandas as pd
import openpyxl
....
pd.options.display.float_format = '{:.5f}'.format
file_list = os.listdir('/home/sejahui/projects/stock_data_excel')
list_1 = []
list_2 = []
list_3 =[ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 ]
for i in range(10):
os.chdir('/home/sejahui/projects/stock_data_excel')
odd = file_list[i]
td = pd.read_excel('/home/sejahui/projects/stock_data_excel/'+str(odd))
td['Date'] = pd.to_datetime(td['Date'], format = '%Y-%m-%d' )
for r in range(12):
target_year = list_3[r]
data = td.query('Date.dt.year == @target_year')
'''
td['Year'] = td['Date'].dt.year
data = td.groupby(['Year'])
'''
def calMACD(data, short=5, long=25, signal=9):
data.sort_index()
data['MVA_25']=data['Close'].ewm(span=long, adjust=False).mean()
data['MVA_5']=data['Close'].ewm(span=short, adjust=False).mean()
data['MACD']=data['Close'].ewm(span=short, adjust=False).mean() - data['Close'].ewm(span=long, adjust=False).mean()
data['Signal']=data['MACD'].ewm(span=signal, adjust=False).mean( )
#data['Buy_sign']=(data['MACD']-data['Signal']) >=600
data['Buy_sign']=np.where(data['MACD']-data['Signal'] >=451, 'Buy' , 'Sell' )
#data['Target_1']=(data['Close']-data['Close'].shift(1))/data['Close'].shift(1)*100
#data['Target_1']=np.where(data['Buy_sign']=='Buy', (data['Change'])+1,1)
#data['Target_2']=np.where(data['Buy_sign']=='Sell', (data['Change'])+1,1)
#data['Real_world']= 1000000*data['Target_1']
#data['Real_world_2']= 1000000*data['Target_2']
#data['Condition'] = np.where(data['Real_world']<1000000, data['Real_world']-data['Real_world'].shift(-2),1)
##data['Condition_2'] = np.where(data['Real_world']<1000000, data['Target_1'].shift(-2),1)
#data['Moneyflow'] =
#plt.plot(data['Date'], data['Real_world'])
#data[data.Buy_sign !='Sell']
return data
print(calMACD(data), odd)
我尝试在 for 循环中使用 for 循环获取结果,但是,第二个 for 循环只给出了 for 循环的最后一个结果。我应该进行哪些更改才能获得第二个 for 循环的所有结果?
※注意:for 循环的第二个缩进可能看起来不正确,但是,它工作得很好,没有任何错误。
【问题讨论】:
-
您的第一个
for循环没有执行任何指令,而您的第二个for循环正在执行一条指令:target_year = list_3[r]。正确缩进你的代码。并删除不必要的空行。 -
对于第一个 for 循环的视觉效果感到抱歉。它看起来像是单独工作,但是它赋予了它底部代码行的价值。