如何使用api和for循环组合json文件中的多个 Dataframe ((Python)

xa9qqrwz  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(181)

我正在尝试下载多个公司股票代码的财务比率数据,并将数据保存到一个数据框中。我使用了一个函数来与api交互并下载json文件,然后我尝试创建一个for循环来遍历tickers字典。

api_key = 'API KEY REMOVED FOR PRIVACY'

def get_ratios(stock):
    url = (f'https://financialmodelingprep.com/api/v3/ratios/{stock}?limit=40&apikey={api_key}')
    x = pd.read_json(url)
    return x

仅使用函数get_rations('aapl')返回一个 Dataframe ,但我希望能够检索多个ticker的数据,而不仅仅是aapl。

我尝试创建一个for循环,以便能够检索多个ticker的数据。当我尝试将函数保存到 Dataframe 时,仅保存aan的数据。。因此,我认为它必须覆盖aapl的数据。我不确定如何修复此问题,我已尝试创建另一个for循环。将 Dataframe y附加到自身,但我刚刚返回一个错误。

ticker = ['AAPL','AAN']
for i in ticker:
    y = get_ratios(i)

但当我不将get_ratio(i)保存到一个列表中并按如下所示运行它时,我会得到一个aapl和aan数据的列表。

ticker = ['AAPL','AAN']
for i in ticker:
    print(get_ratios(i))

符号日期期间当前比率快速比率现金比率
0 aapl 2020-09-26财年1.363604 1.218195 0.360710
1 aapl 2019-09-28财年1.540126 1.384447 0.462022
2 aapl 2018-09-29财年1.123843 0.986566 0.221733
3 aapl 2017-09-30财年1.276063 1.089670 0.201252

rsaldnfx

rsaldnfx1#

将 Dataframe 放在返回框旁边 get_ratios() 到列表中,并作为最后一步 pd.concat 将 Dataframe 合并为一。例如:

ticker = ["AAPL", "AAN"]

df_list = []
for i in ticker:
    df_list.append(get_ratios(i))

df_final = pd.concat(df_list)
q5lcpyga

q5lcpyga2#

在一行中使用列表理解和 pd.concat ,你可以:

df = pd.concat([get_ratios(t) for t in ticker])

相关问题