【问题标题】:How do I apply my function which returns a pandas dataframe, to a range of inputs so it returns individual dataframes?如何将返回 pandas 数据帧的函数应用于一系列输入,以便返回单个数据帧?
【发布时间】:2021-02-07 12:36:27
【问题描述】:

我在 python 中使用 alpha_vantage API,它返回一个 Pandas 数据框表。

我在下面编写了一个函数,它采用股票名称,重置数据框的索引并重命名它。如何将此功能应用于一些输入,以便为它们带回单独的数据帧?目前,我必须手动执行此操作,并为每个输入单独运行该函数。

如果我用股票列表创建一个熊猫系列,并将该功能应用于该系列,它会起作用吗?

def get_stock(ticker):
    stock, meta_data = ts.get_daily_adjusted(symbol=ticker, outputsize='compact')
    ticker = pd.DataFrame(stock)
    ticker = ticker.reset_index()
    return ticker

为了使这个数据框在函数之外可用,我运行它如下:

example = get_stock('XX')

example 因此是返回的数据帧变量。

谢谢!

【问题讨论】:

    标签: python pandas stock alpha-vantage


    【解决方案1】:

    您可以使用 globals 变量来创建不同的变量:

    def get_stock(ticker):
        ...
    
    for symbol in [list_of_symbols]:
        globals()[symbol + '_df'] = get_stock(symbol)
    

    当然,您可以为数据框使用任何其他名称。

    【讨论】:

    • 感谢您的回复。我不确定如何实现这一点 - 你能分解一下 for 循环中发生的事情吗?
    • 在 list_of_symbols 中,您必须输入您想要获取的股票数据框的名称(字符串)(例如您示例中的“XX”)。在 for 循环中,您正在创建一个以股票名称加上扩展名“_df”命名的数据框变量,如果您使用 ['XX'] 作为 [list_of_symbols] 这将创建一个名为 XX_df 的变量。
    • 现在我有了这些单独的数据框,是否可以对它们都应用一个函数?例如,我想将每个特定值附加到列表中:closing = [] def closing_price(ticker): close = ticker['4. close'].iloc[0] closing.append(close)
    • 在这种情况下,我建议不要为每个单独的数据帧创建变量,而是创建一个列表/字典,而不是在其中放置所有不同的数据帧。然后,您可以使用“map”之类的函数将函数应用于所有元素,或者仅使用 for 循环遍历所有元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    相关资源
    最近更新 更多