Добавление нескольких фреймов данных в один - Pandas - PullRequest
1 голос
/ 09 февраля 2020

Я запускаю все oop, чтобы получить финансовую информацию для списка тикеров, который выводит отдельные фреймы финансовых данных на тикер (как показано внизу) - что не является моей целью. Код, который я использую, ниже-

def financefetch(ticker):
    yahoo_financials = YahooFinancials(ticker)
    balance_sheet_data_qt = yahoo_financials.get_financial_stmts('quarterly', 'balance')
    dfItem =  pd.DataFrame.from_records(balance_sheet_data_qt)

dataframe_entries = list()
for result in balance_sheet_data_qt.get('balanceSheetHistoryQuarterly').get(ticker): 
    extracted_date = list(result)[0]
    extracted_ticker = ticker
    dataframe_row = list(result.values())[0]
    dataframe_row['date'] = extracted_date
    dataframe_row['ticker'] = extracted_ticker
    dataframe_entries.append(dataframe_row)
df = pd.DataFrame(dataframe_entries).set_index('date','ticker')
print(df)

return(df)

tickerdict = {}
tickerlist = ['AAPL','GOOG', 'MU']
for x in tickerlist:
    tickerdict[f'df_{x}'] = financefetch(x)

Я пытаюсь создать один фрейм данных, содержащий все мои данные для перечисленных тикеров.

                accountsPayable         cash  commonStock  ...     totalLiab  totalStockholderEquity  treasuryStock
date                                                   ...                                                     
2019-12-28      45111000000  39771000000  45972000000  ...  251087000000             89531000000     -418000000
2019-09-28      46236000000  48844000000  45174000000  ...  248028000000             90488000000     -584000000
2019-06-29      29115000000  50530000000  43371000000  ...  225783000000             96456000000     -639000000
2019-03-30      30443000000  37988000000  42801000000  ...  236138000000            105860000000    -1499000000

[4 rows x 24 columns]
            accountsPayable         cash  commonStock  ...    totalLiab  totalStockholderEquity  treasuryStock
date                                                   ...                                                    
2019-12-31       5561000000  18498000000  50552000000  ...  74467000000            201442000000    -1232000000
2019-09-30       4142000000  16032000000  49040000000  ...  68075000000            194969000000    -1196000000
2019-06-30       3925000000  16587000000  47937000000  ...  64909000000            192192000000    -1091000000
2019-03-31       3710000000  19148000000  46532000000  ...  61877000000            183472000000    -1780000000

[4 rows x 26 columns]
            accountsPayable  capitalSurplus        cash  ...    totalLiab  totalStockholderEquity  treasuryStock
date                                                     ...                                                    
2019-11-28       1879000000      8428000000  6969000000  ...  13051000000             36500000000    -3265000000
2019-08-29       1677000000      8214000000  7152000000  ...  12019000000             35881000000    -3212000000
2019-05-30       1336000000      8217000000  5157000000  ...  10000000000             35323000000    -3213000000
2019-02-28       1523000000      8143000000  6353000000  ...  11960000000             34567000000    -3058000000

[4 rows x 29 columns]
            accountsPayable  capitalSurplus         cash  ...    totalLiab  totalStockholderEquity  treasuryStock
date                                                      ...                                                    
2019-12-31       1363000000     45851000000  19079000000  ...  32322000000            101054000000     -489000000
2019-09-30        860000000     45059000000  15979000000  ...  30419000000             93999000000     -849000000
2019-06-30        655000000     44277000000  13877000000  ...  28244000000             88762000000     -483000000
2019-03-31        604000000     43533000000  11076000000  ...  22961000000             86516000000     -781000000

[4 rows x 23 columns]

1 Ответ

0 голосов
/ 09 февраля 2020

Вместо добавления каждого из фреймов данных к диктовке, итеративно объедините их вместе.

tickerdf = pd.DataFrame()
tickerlist = ['AAPL','GOOG', 'MU']
for x in tickerlist:
    tickerdf = pd.concat([tickerdf, financefetch(x)])

PS

Эта строка:

df = pd.DataFrame(dataframe_entries).set_index('date','ticker')

должно быть:

df = pd.DataFrame(dataframe_entries).set_index(['date','ticker'])

...