我在遍历df(amexsym)并从另一个df(TS)中的URL检索信息时遇到了一些困难,然后将其他数据附加到df(TS)。我看到了许多不同的示例,但是在使这项工作仍然存在问题。
我能够使它从csv的符号读取中工作,但是如果符号没有任何信息,我将进入无限循环,而不管Exception和Continue命令如何。
任何帮助将不胜感激。 :)
Amexsym df:
Symbol
0 DDD
1 MMM
2 WBAI
3 WUBA
4 EGHT
5 AHC
6 AOS
7 ATEN
8 AAC
9 AIR
##########################################################################
# Import Libraries
##########################################################################
import pandas as pd
from alpha_vantage.timeseries import TimeSeries
##########################################################################
# SET PATHS
##########################################################################
# Set path for NYSE, AMEX, NASDAQ company listings
amexurl = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nyse&render=download"
nyseurl = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nyse&render=download"
ndqurl = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nyse&render=download"
##########################################################################
# Download company list data from NASDAQ
##########################################################################
amexcl = pd.read_csv(amexurl)
nysecl = pd.read_csv(nyseurl)
ndqcl = pd.read_csv(ndqurl)
##########################################################################
# Define company symbols from DF
##########################################################################
amexsym = amexcl[['Symbol']]
nysesym = nysecl[['Symbol']]
ndqsym = ndqcl[['Symbol']]
##########################################################################
# Download TS data for AMEX exchange symbols
##########################################################################
apikey='xxxxxxxxxxxxxxxx' # Define AlphaVantage API key
symbols = []
with amexsym(['Symbol']) as f:
for row in f:
symbols.append(line.strip())
f.close
i=0
while i<len(symbols):
try:
if i == 0:
ts = TimeSeries(key=apikey, output_format='pandas')
data, meta_data = ts.get_daily(symbol=symbols[i],
outputsize='compact'
print(i,symbols[i],"has data stored to dataframe")
else
ts1 = TimeSeries(key=apikey, output_format='pandas')
ts.append(ts1), header=False)
print(i, symbols[i],"has data stored to dataframe")
except
print("No information for ticker # and symbol")
print(i,symbols[i])
continue
结果:
TypeError跟踪(最近一次通话)
in()
5
6个符号= []
----> 7,其中amexsym()为f:
f中的第8行:
9个符号.append(line.strip())
TypeError:“ DataFrame”对象不可调用
答案 0 :(得分:0)
问题出在这行上。
symbols = []
with amexsym(['Symbol']) as f:
for row in f:
symbols.append(line.strip())
f.close
一种更容易的方法。
symbols = []
for i, row in amexsym.iterrows():
symbols.append(row['Symbol'].strip())