Импортирует модули:Невозможно присоединиться к dataframe даже после того, как следование примеру
import Quandl
import pandas as pd
from pandas.tools.plotting import df_unique
чтения апи ключ:
api_key = open('quandlapikey.txt','r').read()
В настоящее время функция читает файл CSV, чтобы получить коды, однако я планирую изменить это к sqllite ..
def stock_list():
#stocks = pd.read_csv('TID.csv'.rstrip())
stocks = open('TID.csv').readlines()
return stocks[0:]
Получить коды акций от quandl это работает.
def getStockValues():
stocks = stock_list()
main_df = pd.DataFrame()
for abbrv in stocks:
query = "LSE/" + str(abbrv).strip()
df = Quandl.get(query, authtoken=api_key,start_date='2016-04-05', end_date='2016-04-10')
df = df['Price']
df.columns = [abbrv]
print(query)
print(df)
Данное заявление вызывает проблемы по какой-либо причине, пока цикл не может присоединиться к дополнительным ценам на акции.
#This statement Prints as
print(df.tail(5))
#causes error
if main_df.empty:
main_df = df
else:
main_df = main_df.join(df)
# exit
print('Task done!')
getStockValues()
Это результат выводов печати и ошибок соединения.
Result:
LSE/VOD
Date
2016-04-14 226.80
2016-04-15 229.75
<ETC for all stocks>
Traceback (most recent call last):
File "H:\Workarea\DataB\SkyDriveP\OneDrive\PyProjects\Learning\21 myPprojects\stockPrices.py", line 49, in <module>
getStockValues()
File "H:\Workarea\DataB\SkyDriveP\OneDrive\PyProjects\Learning\21 myPprojects\stockPrices.py", line 43, in getStockValues
main_df = main_df.join(df)
File "H:\APPS\Python35-32\lib\site-packages\pandas\core\generic.py", line 2669, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'join'
Дальнейшие тесты показали, что этот вопрос, как представляется, с областью данных панд объект это вызывает и вопрос:
main_df = pd.DataFrame()
for abbrv in stocks:
query = "LSE/" + str(abbrv).strip()
df = Quandl.get(query, authtoken=api_key,start_date='2016-03-05', end_date='2016-04-10')
df = df['Price']
df.columns = [abbrv]
#causes error
if main_df.empty:
main_df = df
else:
main_df = main_df.join(df)
Однако это не приводит к ошибке, однако, только возвращает один набор данных:
for abbrv in stocks:
main_df = pd.DataFrame()
query = "LSE/" + str(abbrv).strip()
df = Quandl.get(query, authtoken=api_key,start_date='2016-03-05', end_date='2016-04-10')
df = df['Price']
df.columns = [abbrv]
if main_df.empty:
main_df = df
else:
main_df = main_df.join(df)
Просьба представить воспроизводимый пример. Кроме того, сообщение об ошибке указывает, что 'main_df' является серией, а не кодом DataFrame – joris
, который должен работать так, как в случае ошибки. Однако после вашего комментария я изменил код и, похоже, проблема с областью. –
Жаль, что это не сработало, теперь я пытаюсь найти другой способ добиться той же благодарности. –