Пустой фрейм данных на выходе

Обновленный пост. Я пытаюсь получить данные из баланса в Yahoo Fianance, используя пакет yahoo_fin. Для загрузки данных я использую код ниже:

import yahoo_fin.stock_info as si
import pandas as pd
import requests
import requests_html

ticker_list = ["amzn", "aapl"]

# Get data in the current column for each stock's valuation table
balance_sheets = {}
for ticker in ticker_list:
    balance_sheets[ticker] = si.get_balance_sheet(ticker)
    
recent_sheets = {ticker : sheet.iloc[:,:1] for ticker,sheet in balance_sheets.items()}
 
for ticker in recent_sheets.keys():
     recent_sheets[ticker] = pd.DataFrame(columns=["9/29/2022", "9/29/2021", "9/29/2020"])
 # combine all balance sheets together
combined_sheets = pd.concat(recent_sheets)
 
# reset index to pull in ticker
combined_sheets = combined_sheets.reset_index()
 
# update column names
combined_sheets.columns = ["Ticker", "Breakdown", "9/29/2022", "9/29/2021", "9/29/2020"]

Но когда я пытаюсь получить данные, у меня на выходе появляется пустой фрейм данных.

И я попытался получить данные с помощью yfinance:

import yfinance as yf
import pandas as pd

fang = ['FB','AMZN','NFLX','GOOG']
tickers = [yf.Ticker(ticker) for ticker in fang]
dfs = [] # list for each ticker's dataframe
for ticker in tickers:
    # get each financial statement
    pnl = ticker.financials
    bs = ticker.balancesheet
    cf = ticker.cashflow

    # concatenate into one dataframe
    fs = pd.concat([pnl, bs, cf])

    # make dataframe format nicer
    # Swap dates and columns
    data = fs.T
    # reset index (date) into a column
    data = data.reset_index()
    # Rename old index from '' to Date
    data.columns = ['Date', *data.columns[1:]]
    # Add ticker to dataframe
    data['Ticker'] = ticker.ticker
    dfs.append(data)
data.iloc[:,:3]# for display purposes

Но у меня ошибка:

KeyError                                  Traceback (most recent call last)
Input In [5], in <cell line: 8>()
      7 dfs = [] # list for each ticker's dataframe
      8 for ticker in tickers:
      9     # get each financial statement
---> 10     pnl = ticker.financials
     11     bs = ticker.balancesheet
     12     cf = ticker.cashflow
KeyError: 'regularMarketOpen'

Я также пытался решить эту проблему, как в посте Yfinance KeyError: 'regularMarketOpen', но не нашел "сырого" data = utils.get_json(url+'/financials', proxy)" in yfinance/base.py"

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Фрейм данных recent_sheets[ticker] — это пустой фрейм данных, поэтому ось имеет 0 элементов. Если вы пытаетесь создать новый фрейм данных с этими столбцами, сделайте

for ticker in recent_sheets.keys():
    recent_sheets[ticker] = pd.DataFrame(columns=["9/29/2022", "9/29/2021", "9/29/2020"])

это работает, большое спасибо! Но теперь у меня на выходе пустой фрейм данных, хотя даты такие же, как в балансе Yahoo Finance.

jrpars1 14.04.2023 18:15

Другие вопросы по теме