尝试使用pandas_datareader从列表创建数据框

时间:2019-12-03 03:53:13

标签: python pandas dataframe variables pandas-datareader

我正在尝试定义一个函数,该函数需要一个股票报价器列表,并使用来自Yahoo Finance的适当数据为每个报价器创建一个数据框。

首先,该函数带有* arg。

一旦通过了股票代号/代号列表,该函数就会在列表中循环。

对于每个代码,该函数调用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)

似乎不能在循环中动态创建以代码自动取款机命名的数据帧,也不能动态创建本地变量。预先感谢。

下面的注释关闭了下面的更改,仍然没有得到想要的输出。

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)

0 个答案:

没有答案