Я пытаюсь написать код Python для загрузки данных об акциях NSE для всех перечисленных компаний. На NSE India зарегистрировано чуть более 1700 компаний. Мне нужны данные только за последние 120 дней. Я написал приведенный ниже код, но он выдает ошибку ниже, попробовал несколько способов исправить это, но он все еще не работает. Любые рекомендации по решению этой проблемы будут высоко оценены. Обратите внимание, что я объявил все необходимые переменные, которые присутствуют в моем коде.
Ошибка:
IndexError: одиночный позиционный индексатор находится за пределами границ
Моя версия Python — 3.13
def getHistoricalData(symInfo):
res = None
try:
parseInstrument = urllib.parse.quote(symInfo.instrument_key)
fromDate = (datetime.now(TIME_ZONE) - timedelta(days=120)) . strftime("%Y-%m-%d")
todate = datetime.now(TIME_ZONE).strftime("%Y-%m-%d")
url = f'https://api.upstox.com/v2/historical-ca ... /{fromDate}'
res = requests.get(url, headers={'accept': 'application/json', }, params={}, timeout=5.0)
candleRes = res.json()
if 'data' in candleRes and 'candles' in candleRes['data'] and candleRes['data']['candles']:
candleData = pd.DataFrame(candleRes['data']['candles'])
candleData.columns = ['date', 'open', 'high', 'low', 'close', 'vol', 'oi']
candleData = candleData[['date', 'open', 'high', 'low', 'close', 'vol', 'oi']]
candleData['date'] = pd.to_datetime(candleData['date']).dt.tz_convert('Asia/Kolkata')
candleData['symbol'] = symInfo.tradingsymbol
return candleData
else:
print('No data', symInfo.instrument_key, candleRes)
except:
print(f'Error in data fetch for (symInfo.instrument_key) {res} {e}')
candledfList = []
for i in symboldf.index[:-1]:
candledfList = []
res = getHistoricalData(symboldf.iloc)
if res is not None: candledfList.append(res)
finalDataDf = pd.concat(candledfList, ignore_index=True)
isCsv = True
for symData in candledfList[:-1]:
try:
filename = symData.iloc[0]['symbol']
if isCsv:
filename = f'{filename}.csv'
symData.to_csv(folder + filename, index=False)
del candledfList
else:
filename = f'{filename}.parquet'
symData.to_parquet(folder_parquet + filename, engine='pyarrow')
del candledfList
except Exception as e:
print(f'Error {e}')
Подробнее здесь: https://stackoverflow.com/questions/792 ... -of-bounds
Ошибка Python – IndexError: одиночный позиционный индексатор выходит за пределы ⇐ Python
Программы на Python
1737411238
Anonymous
Я пытаюсь написать код Python для загрузки данных об акциях NSE для всех перечисленных компаний. На NSE India зарегистрировано чуть более 1700 компаний. Мне нужны данные только за последние 120 дней. Я написал приведенный ниже код, но он выдает ошибку ниже, попробовал несколько способов исправить это, но он все еще не работает. Любые рекомендации по решению этой проблемы будут высоко оценены. Обратите внимание, что я объявил все необходимые переменные, которые присутствуют в моем коде.
Ошибка:
IndexError: одиночный позиционный индексатор находится за пределами границ
Моя версия Python — 3.13
def getHistoricalData(symInfo):
res = None
try:
parseInstrument = urllib.parse.quote(symInfo.instrument_key)
fromDate = (datetime.now(TIME_ZONE) - timedelta(days=120)) . strftime("%Y-%m-%d")
todate = datetime.now(TIME_ZONE).strftime("%Y-%m-%d")
url = f'https://api.upstox.com/v2/historical-candle/{parseInstrument}/day/{todate}/{fromDate}'
res = requests.get(url, headers={'accept': 'application/json', }, params={}, timeout=5.0)
candleRes = res.json()
if 'data' in candleRes and 'candles' in candleRes['data'] and candleRes['data']['candles']:
candleData = pd.DataFrame(candleRes['data']['candles'])
candleData.columns = ['date', 'open', 'high', 'low', 'close', 'vol', 'oi']
candleData = candleData[['date', 'open', 'high', 'low', 'close', 'vol', 'oi']]
candleData['date'] = pd.to_datetime(candleData['date']).dt.tz_convert('Asia/Kolkata')
candleData['symbol'] = symInfo.tradingsymbol
return candleData
else:
print('No data', symInfo.instrument_key, candleRes)
except:
print(f'Error in data fetch for (symInfo.instrument_key) {res} {e}')
candledfList = []
for i in symboldf.index[:-1]:
candledfList = []
res = getHistoricalData(symboldf.iloc[i])
if res is not None: candledfList.append(res)
finalDataDf = pd.concat(candledfList, ignore_index=True)
isCsv = True
for symData in candledfList[:-1]:
try:
filename = symData.iloc[0]['symbol']
if isCsv:
filename = f'{filename}.csv'
symData.to_csv(folder + filename, index=False)
del candledfList
else:
filename = f'{filename}.parquet'
symData.to_parquet(folder_parquet + filename, engine='pyarrow')
del candledfList
except Exception as e:
print(f'Error {e}')
Подробнее здесь: [url]https://stackoverflow.com/questions/79239785/python-error-indexerror-single-positional-indexer-is-out-of-bounds[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия