Благодаря @James у меня есть рабочий критерий фильтра. Теперь я попытался создать сценарий, который позволил бы мне загрузить файл данных, который содержит список биржевых тикеров и даты выпуска. Следовательно, я хочу перебрать список по функции фильтра. Тем не менее, я продолжаю получать
IndexError: index 0 is out of bounds for axis 0 with size 0
Любой способ как это исправить? См. Ниже сценарий и функцию:
Функция фильтра:
import pandas as pd
from datetime import datetime
import urllib
import datetime
def get_data(issue_date, stock_ticker):
df = pd.read_csv (r'D:\Project\Data\Short_Interest\mergedshort.csv')
df['Date'] = pd.to_datetime(df['Date'], format="%Y%m%d")
d = df
df = pd.DataFrame(d)
short = df.loc[df.Symbol.eq(stock_ticker)]
# get the index of the row of interest
ix = short[short.Date.eq(issue_date)].index[0]
# get the item row for that row's index
iloc_ix = short.index.get_loc(ix)
# get the +/-1 iloc rows (+2 because that is how slices work), basically +1 and -1 trading days
short_data = short.iloc[iloc_ix-10: iloc_ix+11]
return [short_data]
и сценарий для выполнения итераций и загрузки списка (который содержит список «Issue_Dates» и «Stock_tickers»).
import shortdatafilterfinal
import csv
import tkinter as tk
from tkinter import filedialog
# SHORT DATA trading day time series
# Open File Dialog
# iterates the stock tickers and respective dates over the filter function
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
# Load Spreadsheet data
f = open(file_path)
csv_f = csv.reader(f)
next(csv_f)
result_data = []
# Iterate
for row in csv_f:
try:
return_data = shortdatafilterfinal.get_data(row[1], row[0])
if len(return_data) != 0:
# print(return_data)
result_data_loc = [row[1], row[0]]
result_data_loc.extend(return_data)
result_data.append(result_data_loc)
except AttributeError:
print(row[0])
print('\n\n')
print(row[1])
continue
if result_data is not None:
with open('resultsshort.csv', mode='w', newline='') as result_file:
csv_writer = csv.writer(result_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for result in result_data:
# print(result)
csv_writer.writerow(result)
else:
print("No results found!")