在 Python 中使用循环创建多个数据帧

Create multiple dataframes with a loop in Python

所以我得到了我想缩短的这部分代码:

df_1 = investpy.stocks.get_stock_recent_data('Eco','Colombia',False)
df_2 = investpy.stocks.get_stock_recent_data('JPM','United States',False)
df_3 = investpy.stocks.get_stock_recent_data('TSM','United States',False)
df_5 = investpy.stocks.get_stock_recent_data('CSCO','United States',False)
df_8 = investpy.stocks.get_stock_recent_data('NVDA','United States',False)
df_9 = investpy.stocks.get_stock_recent_data('BLK','United States',False)

因为我使用相同的代码,而且一行到另一行只有少数事情发生变化,我想我可能会使用一个函数来解决这个问题。我创建了这个:

def _get_asset_data(ticker, country, state):
    investpy.stocks.get_stock_recent_data(ticker, country, state)

所以我尝试了这个:

_get_asset_data('TSLA', 'United States', False) print(_get_asset_data)

<function _get_asset_data at 0x7f323c912560>

但是,我不知道如何将通过此函数接收到的每组数据都存储在每个数据框中 company.I 尝试了 for 循环但没有成功。

有什么想法吗? ¡在此先感谢您的关注与配合!

这是一种基于给定代码的方法。你应该避免在实践中使用它,因为它包含冗余代码,这使得它难以维护。您会在下面找到更灵活的方法。

基于您的解决方案

import investpy
import pandas as pd

def _get_asset_data(ticker, country, state=False):
    return investpy.stocks.get_stock_recent_data(ticker, country, state)

df_1 = _get_asset_data('Eco','Colombia')
df_2 = _get_asset_data('JPM','United States')
df_3 = _get_asset_data('TSM','United States')
df_5 = _get_asset_data('CSCO','United States')
df_8 = _get_asset_data('NVDA','United States')
df_9 = _get_asset_data('BLK','United States')

final = pd.concat([df_1, df_2, df_3, df_5, df_8, df_9], axis=1)
final

更通用的解决方案:

import investpy
import pandas as pd


def _get_asset_data(ticker, country, state=False):
    return investpy.stocks.get_stock_recent_data(ticker, country, state)


stocks = [
    ('Eco', 'Colombia'),
    ('JPM', 'United States'),
    ('TSM', 'United States'),
    ('CSCO', 'United States'),
    ('NVDA', 'United States'),
    ('BLK', 'United States'),
    ]

results = []

for stock in stocks:
    result = _get_asset_data(*stock)
    results.append(result)

final = pd.concat(results, axis=1)
final