IndexError:下载数据时单个位置索引器出现越界错误

时间:2019-09-28 10:46:44

标签: python pandas dataframe python-datetime quandl

我正在运行代码以下载数据并将其保存在本地驱动器中。但是,我得到上面提到的错误信息。请注意,最初我将日期转换为其他格式,并且在保存日期时收到此错误消息。

您能帮我解决这个错误吗?

'''

导入数量 导入操作系统 将熊猫作为pd导入 导入日期时间为dt 导入glob

如果名称 ==“ 主要”:

'Creating bucket to store missing data file.'
data_missing = []
New_date = []

'Defining a path to save CSV files after downloading and also deleting all csv file at one go.'
extension = 'csv'
path = "F:/Tradepoint/MyMkt/"
if not os.path.exists(path):
       os.mkdir(path)
os.chdir(path)
csv_count = [forma for forma in glob.glob('*.{}'.format(extension))]
for csv_coun in range(len(csv_count)):
    os.remove(r"F:/Tradepoint/MyMkt/" + csv_count[csv_coun][0:])

'Setting up quandl configuration, reading ticker list, setting up date for which data is going to get downloaded'
quandl.ApiConfig.api_key = 'Hba3CzgNnEa2LMxR14FA'
end_date = dt.date.today()
diff_year = dt.timedelta(days=3650)
start_date = end_date - diff_year
stock_list = pd.read_csv(r"F:\Abhay_New\Abhay\Python\Project\SHARADAR_SF1.csv")

'Looping through quandl website to download data and renaming them as per requirement.'
for stock_lis in range(len(stock_list)):
    data = quandl.get_table('SHARADAR/SEP', date={'gte':start_date, 'lte':end_date}, ticker=stock_list.iloc[stock_lis])
    sort_by_date = data.sort_values('date')
    for sort_by_dat in range(len(sort_by_date['date'])):
        Date = dt.date.strftime(sort_by_date['date'][sort_by_dat],'%d-%m-%Y')
        New_date.append(Date)
    if len(data)>1:
        Date = pd.Series(New_date).rename('Date').astype(str)
        OPEN = sort_by_date['open']
        HIGH = sort_by_date['high']
        LOW =  sort_by_date['low']
        CLOSE = sort_by_date['close']
        VOLUME = sort_by_date['volume']
        final_data = pd.concat([Date,OPEN,HIGH,LOW,CLOSE,VOLUME],axis=1)
        stk = stock_list.iloc[sort_by_dat][0]
        final_data.to_csv(str(path + stk + '.csv'), sep=',', index = False, header = False)
    else:
        data_missing.append(stock_list.iloc[sort_by_dat]) 

打印(数据丢失)

'''

谢谢, 阿比(Abhay Dodiya)

1 个答案:

答案 0 :(得分:0)

两个for循环的索引均为i。这会导致潜在的意外行为:

for i in range(2):
     for i in range(3,11):
         pass
     print(i)

给予

10
10

因此,即使退出第二个循环之后,i中的最后一个值仍然存在。重命名该循环中的计数变量,您的问题就不存在了。 在您的情况下,您的日期可能多于股票,因此您会看到错误消息。