【发布时间】:2020-05-02 17:19:39
【问题描述】:
感谢@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!")
【问题讨论】:
-
您想从初始数据帧中获得 +/-1 行,还是从第一个过滤器的结果中获得 +/-1 行?
-
我希望 +/-1 来自第一个过滤器的结果,而不是来自初始数据帧
-
@James,希望清楚吗?
标签: python arrays dataframe filter index-error