有没有办法循环遍历python中的函数?

史蒂夫10297

我有这段代码,它通过他们的 API 从美联储提取数据。我想弄清楚如何有不同的 FRED ID 可以插入函数然后输出到数据表。因此,例如,我会输入“CPIAUCSL”,然后它会给我一个值列表,然后脚本会输入“A191RL1Q225SBEA”,然后将这些值附加到数据表的底部(这样 CPIAUCSL 的值就会高于它)。我尝试使用以下脚本执行此操作,但它只会覆盖以前的值。有任何想法吗?

import pandas as pd  
from requests import request  
import json  
from requests import request  
from urllib.request import urlopen  
from pandas import ExcelWriter  

def fred_variables(fred_id_list):  
    main_url= "https://api.stlouisfed.org/fred/series/observations?series_id="  
    API= "&api_key=50ebfb4929a3fe603e3b369d51826822"  
    file= "&file_type=json"  
    descending= "&sort_order=desc"  
    max_return= "&limit=21"  
    final_URL= main_url + fred_id_list + API + file + descending + max_return
    page = urlopen(final_URL)  
    data1= page.read()  
    nested_json = json.loads(data1)  
    json_file = pd.DataFrame.from_dict(pd.json_normalize(nested_json, record_path="observations"))  
    df= json_file  
    df['fredID'] = str(fred_id_list)  
    df2 = df.drop(df.columns[[0, 1]], axis=1)  
    return df2  

    fred_id_list=["CPIAUCSL","A191RL1Q225SBEA"]  
    for x in fred_id_list:  
        print(x)  

fred_variables(x)  
```[enter image description here][1]


  [1]: https://i.stack.imgur.com/8Tglt.png
阿图尔·普拉卡什·辛格

我为你创建了一个假场景:

data = {
    'CPIAUCSL': [12, 23, 1, 43, 12, 53, 13, 53, 1, 53, 123, 534],
    'A191RL1Q225SBEA': [65, 87, 23, 7, 23, 765, 23]
}

def fred_variables(fred_id):
    # processing code
    fake_result = data[fred_id]
    return fake_result

考虑函数就是你的函数。我假设你返回一个项目列表。您可以将 Python 的map函数用于您的用例。像:

fred_id_list = ["CPIAUCSL","A191RL1Q225SBEA"]
result = list(map(fred_variables, fred_id_list))
print(result)

它将生成以下输出:

[[12, 23, 1, 43, 12, 53, 13, 53, 1, 53, 123, 534], [65, 87, 23, 7, 23, 765, 23]]

如果您将整个数据合并到一个列表中,您可以执行以下操作:

final_result = []
for res in result:
    final_result.extend(res)

print(final_result)

最终输出将类似于:

[12, 23, 1, 43, 12, 53, 13, 53, 1, 53, 123, 534, 65, 87, 23, 7, 23, 765, 23]

对于您的具体情况

现在回到您的问题,您正在从您的函数返回一个 Pandas DataFrame。所以,你需要做的是:

fred_id_list = ["CPIAUCSL","A191RL1Q225SBEA"]
result = list(map(fred_variables, fred_id_list))

这里result将是一个 DataFrame 列表。您可以借助 Pandas 的concat功能组合所有这些 DataFrame

final_result = pd.concat(result)

我希望它有帮助。谢谢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法在python的lambda中执行“ if”

有没有办法在python中重载+ =?

python中有没有办法遍历列表理解中的矩阵

有没有办法遍历传递给Elixir中的函数的所有参数?

有没有办法在C ++中复合函数?

有没有办法在ListView中调用函数?

有没有办法在Python中包含±(正负)?

有没有办法在使用循环时将函数的输出放入python中的数组中?

有没有办法镜像python函数?

有没有办法在python中禁止舍入?

有没有办法在 C++ 中并行循环遍历向量的所有元素?

有没有办法从python中的调用函数访问变量?

有没有办法遍历 2 个 for 循环,使得 (i+j) > 3

有没有办法在python中清除屏幕?

有没有办法在 Python 中执行固定持续时间的函数?

有没有办法在python中添加.replace函数?

有没有办法反转这个python函数?

有没有办法在python中输入小写?

有没有办法循环遍历python中for循环中的列表?

有没有办法循环遍历 JSON 数据并将其显示在 HTML 中

有没有办法计算python中while循环中的迭代次数?

有没有办法存储函数循环遍历它们并将它们放入一个对象中

有没有办法摆脱python列表中的“'”?

有没有办法在python中减少n次嵌套的for循环

有没有办法使用for循环在js中创建n个函数

有没有办法在python中打印not bool?

有没有办法让函数调用“继续”影响其调用者中的循环?

有没有办法为python中的内置函数添加额外的属性?

有没有办法在 python 中绘制“函数字符串”?