我非常感谢你的帮助。我对python没有太多的经验。我正在使用yfinance python模块开发一个代码来分析股票
有问题的代码如下(请查看大写字母注释):
#DOWNLOAD INFORMATION WITH YFINANCE (IT’S OK)
stock = yf.download(simbolo,fechaInicial,fechaFinal,progress=False)
#SOME LINES AFTER, IN ORDER TO ADD OTHER COLUMNS:
#ADD THE fecha AND anio COLUMNS TO stock (IT’S OK)
stock['fecha'] = pd.to_datetime(stock.index.values)
stock['anio'] = (stock['fecha'].dt.year).astype('int')
#THE CONTENTS OF stock AT THIS POINT IS:
#LOOP FOR CREATE ONE COLUMN IN stock FOR EVERY YEAR IN DFtablaInflacion. THE CONTENTS OF DFtablaInflacion IS:
for j in DFtablaInflacion.index:
anio = int(DFtablaInflacion['año'][j])
inflacion = float(DFtablaInflacion['valor'][j])
stock[str(anio)] = np.where(stock['anio'] <= anio, inflacion, float(0.0))
#THE LOOP WORKS FOR THE TWO FIRST YEARS: 2016 AND 2017:
但是在第三年失败,当某些行的条件innp.where(stock['anio'] <= anio, inflacion, float(0.0))
为真(anio = 2018
):
---> 70 stock[str(anio)] = np.where(stock['anio'] <= anio, inflacion, float(0.0))
ValueError: Must have equal len keys and value when setting with an iterable
#I MODIFIED THE CODE IN ORDER TO TEST:
for j in DFtablaInflacion.index:
anio = int(DFtablaInflacion['año'][j])
inflacion = float(DFtablaInflacion['valor'][j])
prueba = np.where(stock['anio'] <= anio, inflacion, float(0.0))
print(type(prueba))
print(prueba)
测试输出是(prueba
):
prueba
并且prueba
对于整个for循环来说是正常的,因此错误在:
stock[str(anio)] = np.where(stock['anio'] <= anio, inflacion, float(0.0))
只有当np.where
中的条件为true时才会发生这种情况
目前没有回答
相关问题 更多 >
编程相关推荐