Использовал скрипт с библиотеками pandas и investpy для скачивания с известного финансового сайта исторических котировок в эксель файл. Диапазон дат котировок берется из другого эксель файла (для удобства).
И всё прекрасно работало на одном компьютере, но пришлось его поменять и на новом (как и на других) скрипт перестал воспринимать даты из эксель файла, выдает ошибку: TypeError: Addition/subtraction of integers and integer-arrays with Timestamp is no longer supported..
File “pandas\_libs\tslibs\timestamps.pyx”, line 309, in pandas._libs.tslibs.timestamps._Timestamp.__add__
То есть если взять эксель-файл с датами со старого пк, то всё работает. Но стоит даты в файле изменить на новом (или даже просто пересохранить файл ничего не меняя), то выдает эту ошибку.
Я так понимаю что-то с форматом даты (эксель на новом компе проставляет timestamp в дату?). Можно ли это как-то исправить в коде скрипта?
Вот фрагмент кода с ошибками. Ругается на строку № 3 (in date_from_int), преобразующую число в дату.
В интернетах предлагают решать проблему Timestamp'ов при помощи timedelta, но у меня это не получается. Я “новичок” и весь скрипт составлял по сути из описания библиотеки investpy.
def date_from_int (date_int: int): "returns date in datetime format" return datetime.fromordinal(datetime(1900, 1, 1).toordinal() + date_int - 2).strftime('%d/%m/%Y') test_df=pd.read_excel('Import.xlsx') print (test_df) #Fin = pd.DataFrame({'Close':[0.]},index=datetime.fromordinal(datetime(2010, 8, 5))) for index, row in test_df.iterrows(): print (row["Name"]) Tab1 = investpy.get_etf_historical_data(etf=row["Name"], country=row['Country'], from_date=date_from_int(row["Date0"]), to_date=date_from_int(row["Date1"])) #print (date_from_int(row["Date0"])) Tab1 = Tab1.rename(columns={'Close': row['Name']+'_'+Tab1['Currency'][0]}) Tab1 = Tab1.drop(columns=['Open','High','Low','Volume','Currency','Exchange']) if index == 0: Fin = Tab1 else: Fin = pd.merge(Fin,Tab1,left_index=True,right_index=True,how='outer')