Неподдерживаемые типы операндов для : ‘int’ и ‘datetime.timedelta’

#python #matplotlib #plot #finance #stock

#питон #matplotlib #сюжет #финансы #склад

Вопрос:

Я получаю эту ошибку, пытаясь построить диаграмму. Я пытаюсь построить диаграмму, используя предоставленные значения. Я использую yahoo finance и хочу построить линию сопротивления с помощью python.

 for index in range(len(pivots)):  print(str(pivots[index]) ": " str(dates[index]))   plt.plot_date([dates[index],dates[index] timeD,  pivots[index],pivots[index]], linestyle="-", linewidth=2, marker="none")  

это весь код

 import pandas import yfinance as yf import datetime as dt import pandas as pd from pandas_datareader import data as pdr import matplotlib.pyplot as plt  yf.pdr_override() start= dt.datetime(2019,1,1) now= dt.datetime.now()  stock = input("Enter the stock symbol: ")  while stock !="quit":  df=pdr.get_data_yahoo(stock, start, now)  df["Low"].plot(Label="low")  pivots=[] dates=[] counter=0 lastPivot=0  Range=[0,0,0,0,0,0,0,0,0,0] dateRange=[0,0,0,0,0,0,0,0,0,0]  for i in df.index:  currentMin=min(Range, default=0)  value=round(df["Low"][i],2)   Range=Range[1:9]  Range.append(value)  dateRange=dateRange[1:9]  dateRange.append(i)   if currentMin==min(Range, default=0):  counter-=1  else:  counter=0  if counter==-5:  lastPivot=currentMin  dateloc=Range.index(lastPivot)  lastDate=dateRange[dateloc]  pivots.append(lastPivot)  dates.append(lastDate)  print()  # print(str(pivots)) # print(str(dates)) timeD=dt.timedelta(days=30)  for index in range(len(pivots)):  print(str(pivots[index]) ": " str(dates[index]))   plt.plot_date([dates[index],dates[index] timeD,  pivots[index],pivots[index]], linestyle="-", linewidth=2, marker="none")  plt.show()  stock= input ("Enter the stock symbol : ")  

Ошибка, которую я получаю, заключается в следующем

Обратная связь (последний последний вызов): Файл «Low.py», строка 57, в

 plt.plot_date([dates[index],dates[index] timeD, TypeError: unsupported operand type(s) for  : 'int' and 'datetime.timedelta'  

Спасибо

Ответ №1:

Проблема в том, что это выражение в plt.plot_date :

 dates[index] timeD  

Если вы напечатаете даты, вы получите этот вывод:

 [0,  Timestamp('2019-02-08 00:00:00'),  Timestamp('2019-03-08 00:00:00'),  ...  ...  ...  Timestamp('2021-09-20 00:00:00'),  Timestamp('2021-10-04 00:00:00')]  

Как вы можете видеть, список содержит значения Int и метки времени. Поэтому, когда вы добавляете timeD ведьму в timedelta, эта операция является незаконной.

Я не понимаю, как вы строите dates , но вам нужно изучить логику в этом разделе и проверить, почему вы получаете значения Int и метки времени.