自定义函数调用时出错

新手专区
标签: #<Tag:0x00007f8c74244d68>

(QuanterLi) #1

userlib目录下mylib下的函数,在其它notebook下运行
from userlib import mylib
mylib.get_hs300weigehts(“2017-12-1”)
出现如下错误

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-57-d55de79d522d> in <module>()
      1 from userlib import mylib
----> 2 mylib.get_hs300weigehts("2017-12-1")

NameError: name 'D' is not defined
def get_hs300weigehts(date):
    df = D.history_data(D.instruments(date, date),date,date,fields=['in_csi300'])
    hs300 = df[df['in_csi300']==1]['instrument']
    stocklist=hs300.tolist()
    liutongshizhi=D.history_data(stocklist, start_date=date, end_date=date,fields=['market_cap_float'])  #获取某一时间的流通市值
    liutongshizhi['weigehts']=liutongshizhi['market_cap_float']/liutongshizhi['market_cap_float'].sum()
    #沪深300编制方法采用的是流通市值和分级靠档方法。
    #指数编制的流通股本也不是一般意义的流通股本,要去掉国有股本大股东等不流通的股本。
    return liutongshizhi.loc[:,['instrument','weigehts']]

(iQuant) #2

你好,该问题已经解决,你可以再试一下!


(QuanterLi) #3

好的,可以了。大概是什么原因,我操作的问题还是什么。