社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python:nested for循环被字典中的空值中断

Wler • 3 年前 • 1371 次点击  

我对循环和API非常陌生。我目前正在试用IEX的沙箱来收集财务数据。我所做的是收集IEX支持的股票符号列表,然后使用该列表调用数据并将其附加到数据帧中。问题是,有些年IEX没有特定安全性的数据。我希望在数据帧中保持这种安全性,如果缺少值,就写N/A。我的循环代码如下:

my_columns = ['date','Ticker','Price','o_cash_flow','total_income',
          'total_assets','total_liab','rev','ebit','ttm_eps',
          'shares_out','profit_margin','total_rev','2year_return',
          '1year_return','6month_return','3month_return','1month_return']

financials_df = pd.DataFrame(columns = my_columns)

for symbol_string in symbol_strings:
    batch_api_call_url = f'{sandbox_url}/stable/stock/market/batch?symbols={symbol_string}&types=price,financials,stats,advanced-stats&range=2q&token={token}'
    data = requests.get(batch_api_call_url).json()
    for symbol in symbol_string.split(','):
        print(data[symbol])
        financials_df = financials_df.append(
        pd.Series
     [
            data[symbol]['financials']['financials'][0]['fiscalDate'],
            symbol,
            data[symbol]['price'],
            data[symbol]['financials']['financials'][0]['cashFlow'],
            data[symbol]['financials']['financials'][0]['netIncome'],
            data[symbol]['financials']['financials'][0]['totalAssets'],
            data[symbol]['financials']['financials'][0]['totalLiabilities'],
            data[symbol]['financials']['financials'][0]['revenue'],
            data[symbol]['financials']['financials'][0]['ebit'],
            data[symbol]['stats']['ttmEPS'],
            data[symbol]['stats']['sharesOutstanding'],
            data[symbol]['advanced-stats']['profitMargin'],
            data[symbol]['advanced-stats']['totalRevenue'],
            data[symbol]['stats']['year2ChangePercent'],
            data[symbol]['stats']['year1ChangePercent'],
            data[symbol]['stats']['month6ChangePercent'],
            data[symbol]['stats']['month3ChangePercent'],
            data[symbol]['stats']['month1ChangePercent']
    ],
        index = my_columns),
            ignore_index = True
        )

然后,我收到一个错误“KeyError:‘financials’”,这是因为某些证券缺少第二次调用financials。我希望循环只在dataframe中用N/A替换数据,并在发生这种情况时继续从api调用数据。任何帮助都将不胜感激,谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129765
 
1371 次点击  
文章 [ 2 ]  |  最新文章 3 年前