如何浏览股票行情清单以更新数据框

时间:2019-09-03 18:06:22

标签: python python-3.x pandas list

我真的是Python新手,这个问题可能太基本了,以至于我现在似乎无法在线找到任何答案。

我一直试图遍历9个股票报价器的列表,以下称为“符号”,以从YahooFinancials检索每个报价器的资产负债表,现金流量表和损益表。

曾经使用for symbol in ecommerce():创建一个循环,但在下面收到了TypeError。

    from yahoofinancials import YahooFinancials
    import pandas as pd
    import requests
    import numpy as np
    from datetime import datetime

    ecommerce = ['CTRP', 'EBAY', 'GRUB', 'BABA', 'JD', 'EXPE', 'AMZN', 'BKNG', 'MPNGF']

    for symbol in ecommerce():
        df_income_statement = scrape_table('https://finance.yahoo.com/quote/' + symbol + '/financials?p=' + symbol)
        df_income_statement

        df_cash_flow = scrape_table('https://finance.yahoo.com/quote/' + symbol + '/cash-flow?p=' + symbol)
        df_cash_flow

        balance_sheet_url = 'https://finance.yahoo.com/quote/' + symbol + '/balance-sheet?p=' + symbol
        df_balance_sheet = scrape_table(balance_sheet_url)

预期结果:带有资产负债表“ CTRP”,“ EBAY”,“ GRUB”,“ BABA”,“ JD”,“ EXPE”,“ AMZN”,“ BKNG”,“ MPNGF”的数据框

TypeError: 'list' object is not callable

from yahoofinancials import YahooFinancials import pandas as pd import requests import numpy as np from datetime import datetime

ecommerce = ['CTRP', 'EBAY', 'GRUB', 'BABA', 'JD', 'EXPE', 'AMZN', 'BKNG', 'MPNGF']

for symbol in ecommerce(): df_income_statement = scrape_table('https://finance.yahoo.com/quote/' + symbol + '/financials?p=' + symbol) df_income_statement

1 个答案:

答案 0 :(得分:2)

如果您编写ecommerce(),Python会假定您要调用名称为ecommerce引用的函数(可调用),但是您要遍历整个列表(电子商务包含一个列表) )。

因此,您只需要删除()。您可以从以下内容开始:

for symbol in ecommerce: 
    income_statement_dataframes= pd.read_html('https://finance.yahoo.com/quote/' + symbol + '/financials?p=' + symbol)

使用此代码,income_statement_dataframes应该包含一个数据帧列表。网址所引用的网页上每个html表一个数据帧。 您只需要检查它是哪个表即可。如果幸运的话,您可以通过这种方式使用它。如果在列表的元素之间找不到可用形式的表(例如,如果html更加邪恶),则可以查看BeautifulSoup(导入bs4)。