如何遍历数据框并从网络中提取信息到数据框中

2024-09-30 04:29:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在遍历一个df(amexsym)和从另一个df(TS)中的URL检索信息,然后向df(TS)添加额外的数据时遇到了一些困难。我看到了很多不同的例子,但仍然有问题,使这项工作

我能够使它工作从符号的csv读取,但如果符号没有任何信息,我进入一个无限循环,不管异常和继续命令

非常感谢您的帮助。:)

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 Traceback(最近一次调用的最后一次)

在()

6符号=[]

--->;7以amexsym()作为f:

f行为8:

9符号。追加(line.strip())

TypeError:“DataFrame”对象不可调用


Tags: csvfrompandasdffordataexchange符号
1条回答
网友
1楼 · 发布于 2024-09-30 04:29:57

问题出在这条线上

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

相关问题 更多 >

    热门问题