Я пытаюсь l oop по парам элементов в кортежах, выполнить запрос Postgres и затем добавить данные в DataFrame. Мой код выглядит следующим образом:
import pandas as pd
# Download and import WRDS, using pip if required
try:
import wrds
except ImportError:
!pip install wrds
import wrds
# Connect to wrds
conn = wrds.Connection()
fd_list_most =tuple(["2013-03-01", "2013-03-03", "2013-03-19", "2013-01-29", "2013-03-28", "2013-02-22", "2013-02-27", "2013-03-14", "2013-03-01", "2013-03-18"]);
mcl1=pd.merge(most_cons_list[['gvkey','datadate','bkvlps', 'cik']],mcl,how='left',on=['gvkey'])
print(mcl1);
Выход mcl1:
gvkey datadate bkvlps cik permco
0 008007 2013-12-31 29.0228 0000072971 21305
1 028278 2013-12-31 15.1899 0000714395 12139
2 111940 2013-12-31 13.6911 0000765207 16649
3 157955 2013-12-31 28.0769 0001273813 45077
4 180169 2013-12-31 10.4775 0001390312 53031
5 184167 2013-12-31 18.1538 0000860413 53368
# Loop over each pair of filing date and CIK and retrieve stock price for 7 days either side of filing date
mcl2=pd.DataFrame();
for i in range(len(fd_list_most)):
stmt3="""
select permco, ret, retx, date(date) as date
FROM crsp.dsf
where permco= {}
and date < date '{}' + integer '7'
and date > date '{}' - integer '7'
""".format(mcl['permco'].values[i],fd_list_most[i],fd_list_most[i])
mcl2=mcl2.append(conn.raw_sql(stmt3))
print(mcl2)
Ошибка:
IndexError Traceback (most recent call last)
<ipython-input-37-31f1dfe1daea> in <module>
11 and date < date '{}' + integer '7'
12 and date > date '{}' - integer '7'
---> 13 """.format(mcl['permco'].values[i],fd_list_most[i],fd_list_most[i])
14 mcl2=mcl2.append(conn.raw_sql(stmt3))
15
IndexError: index 6 is out of bounds for axis 0 with size 6
Это пример кода от репетитора, который отлично работает с данными, которые он ввел, но не с моими. Я вижу, что есть проблема с длиной моего индекса, но я не уверен, как ее решить. Буду благодарен за любую помощь. Я новичок, поэтому не всегда понимаю более сложные решения. Я посмотрел на этот вопрос, и имел go на эти IndexError: индекс 1 выходит за границы для оси 0 с размером 1 / ForwardEuler , индекс 100 выходит за границы для ось 0 с размером 100 , но они не сработали для меня, возможно, потому что я не понимаю, как применить решения к моей проблеме. Спасибо