如何遍历DF并将信息从Web检索到DF

时间:2019-02-22 19:42:46

标签: python pandas

我在遍历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”对象不可调用

1 个答案:

答案 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())