python - 将多个数据帧附加到一个 - Pandas
问题描述
我正在运行一个循环来提取股票代码列表的财务信息,该列表输出每个股票代码的财务数据的单独数据帧(如底部所示) - 这不是我的目标。我正在运行的代码,如下 -
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]
解决方案
不是将每个数据帧添加到字典中,而是迭代地将它们联合在一起。
tickerdf = pd.DataFrame()
tickerlist = ['AAPL','GOOG', 'MU']
for x in tickerlist:
tickerdf = pd.concat([tickerdf, financefetch(x)])
附言
这一行:
df = pd.DataFrame(dataframe_entries).set_index('date','ticker')
应该:
df = pd.DataFrame(dataframe_entries).set_index(['date','ticker'])
推荐阅读
- flutter - 如何在依赖的flutter包中使用easy_localization?
- java - p:fileUpload 没有设置任何值
- asp.net-core - DBContext 构造函数中的用户声明有时为空
- continuous-integration - 无法添加 gitlab CI/CD 变量
- php - 无法在 docker 映像中找到包
- python - 如何使用 Python 从货币符号中推断/打印货币代码?
- javascript - Anime.js 动画不工作,(动画没有启动)
- mysql - 无法连接mysql
- numpy - 为什么 .apply() 不像我期望的那样应用旋转?
- angular - Angular 10:数据未插入数据库