我正在使用pandas远程数据功能创建投资组合跟踪器,但是,我遇到了传递多个股票名称和代码的问题。
我想按公司名称创建单独的数据框,我正在尝试使用**kwargs
,但我对它的工作原理有点模糊。
我觉得我很亲密,但却遗漏了某些地方。
def portfolio(startDateYE, startDateMonth, startDateDay, end_dateYE,
end_dateMonth, end_dateDay, **kwargs):
'''insert desired started and ending date as 2014,1,1 and key value pairs
of the stock you would like to look up, i.e. ford = "f" '''
start = datetime.datetime(startDateYE, startDateMonth, startDateDay)
end = datetime.datetime(end_dateYE, end_dateMonth, end_dateDay)
for key, value in kwargs.items():
key = web.DataReader("%s" % value,'yahoo', start, end)
我将如何传递可变数量的变量的示例:
portfolio(2010,1,1,2011,1,1,ford="f",google="googl")
我的目标是:
In [6]: ford.ix['2010-01-04']
Out[6]:
Open 1.017000e+01
High 1.028000e+01
Low 1.005000e+01
Close 1.028000e+01
Volume 6.085580e+07
Adj Close 8.755953e+00
Name: 2010-01-04 00:00:00, dtype: float64
编辑:
def portfolio(startDateYE, startDateMonth, startDateDay, end_dateYE,
end_dateMonth, end_dateDay, **kwargs):
'''insert desired started and ending date as 2014,1,1 and key value pairs
of the stock you would like to look up, i.e. ford = "f" '''
start = datetime.datetime(startDateYE, startDateMonth, startDateDay)
end = datetime.datetime(end_dateYE, end_dateMonth, end_dateDay)
results = {} # this is an empty dictionary
for key, value in kwargs.iteritems():
results[key] = web.DataReader(value, key, 'yahoo', start, end)
print(results)
编辑:
现在我收到以下错误:
`---------------------------------------------------------------------------
ValueError Traceback(最近一次调用最后一次) in() 34''' 35 ---> 36投资组合(2012,1,1,2013,1,1,facebook =“f”,google =“googl”) 37 38#Adjusted_f = f ['Adj Close']
投资组合中的(startDateYE,startDateMonth,startDateDay,end_dateYE,end_dateMonth,end_dateDay,** kwargs) 27 results = {}#这是一个空字典 28为密钥,值为kwargs.iteritems(): ---> 29结果[key] = web.DataReader(值,键,'yahoo',开始,结束) 三十 31'''
DataReader中的/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/io/data.pyc(name,data_source,start,end,retry_count,pause) 86 ff = DataReader(“F-F_ST_Reversal_Factor”,“famafrench”) 87“”“ ---> 88 start,end = _sanitize_dates(开始,结束) 89 90如果data_source ==“yahoo”:
/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/util/decorators.pyc in wrapper(* args,** kwargs) 89其他: 90 kwargs [new_arg_name] = new_arg_value ---> 91 return func(* args,** kwargs) 92返回包装器 93返回_deprecate_kwarg
to_datetime中的ValueError:未知的字符串格式
谢谢!
答案 0 :(得分:0)
问题是你一直在覆盖键值,所以你实际上只保存了最后一个数据集。
您应该分别跟踪键及其结果,如下所示:
results = {} # this is an empty dictionary
for key, value in kwargs.iteritems():
results[key] = web.DataReader(value, key, start, end)
print(results)