首页 > 解决方案 > 尝试使用 pandas_datareader 从列表中创建数据框

问题描述

我正在尝试定义一个函数,该函数采用股票代码列表并使用来自雅虎财经的正确数据为每个代码创建一个数据框。

首先,该函数采用 *arg。

一旦传递了一个ticker/list-of-tickers,函数就会循环遍历列表。

对于每个代码,该函数调用 pandas_data 读取器并获取特定代码的数据。

该数据存储在名为“df”+ str(ticker) 的数据框中

我有:

import pandas_datareader as pdr
import pandas as pd


def Finance1(*args):
    for arg in args: 
        df = pdr.get_data_yahoo(arg)
        global df'arg'
        df'arg' = df

x = "IBM"
y = "XOM"        
list = [x, y]        

Finance1(*list)

似乎无法动态创建以循环中的股票 atm 命名的数据帧/也动态创建本地变量。提前致谢。

下面的评论在下面进行了更改,但仍未获得所需的输出。

import pandas_datareader as pdr
import pandas as pd

dict1 = {}
def Finance1(*args):
    for arg in args:
        df = pdr.get_data_yahoo(arg)
        dict1[arg] = df
        return dict1


x = "IBM"
y = "XOM"        
list = [x, y]        

Finance1(*list)

第二次编辑

import pandas_datareader as pdr
import pandas as pd

def Finance1(*args):
    dict1 = {}
    for arg in args:
        df = pdr.get_data_yahoo(arg)
        return dict1
        dict1[arg] = df



x = "IBM"
y = "XOM"        
list1 = [x, y]        

results = Finance1(*list)

最终和现在工作:

import pandas_datareader as pdr
import pandas as pd

def Finance1(*args):
    dict1 = {}
    for arg in args:
        df = pdr.get_data_yahoo(arg)
        dict1[arg] = df
    return dict1


x = "IBM"
y = "XOM"        
list1 = [x, y]        

results = Finance1(*list1)

标签: pythonpandasdataframevariablespandas-datareader

解决方案


推荐阅读