代码之家  ›  专栏  ›  技术社区  ›  thomas.mac

在pandas库中使用.apply并获得“np不可调用”错误

  •  1
  • thomas.mac  · 技术社区  · 7 年前

    我试图应用我的色散函数:

    def disp_calc(returns, p, wi):    #apply(disp_calc, rows = ...)
        wi = wi/np.sum(wi)
        ri_p = returns_stock.subtract(p,axis=0)    
        rp = np.nansum(wi*((ri_p)**2))
        return np.sqrt(rp)
    

    for i in sectors: 
        returns_sector = returns[sectordict[i]]                  
        pr = returns[sectordict[i]].apply(np.mean,axis=1)         
        w = newmerge.Weight[newmerge.SectorSymbol == i]        
        disp_df[date] = returns_sector.apply(disp_calc(returns_sector,pr,w),axis=1) 
    

    我一直得到 error

    TypeError: ("'numpy.float64' object is not callable", u'occurred at index 2017-01-03 00:00:00')
    

    returns_sector df .

    1 回复  |  直到 7 年前
        1
  •  1
  •   Plasma    7 年前

    disp_calc 作用试试这个:

    disp_df[date] = returns_sector.apply(disp_calc, args=(pr, w), axis=1)
    

    您看到的错误是,您当前的第一个参数 apply() disp_calc() ,它不是函数,因此不是可调用的。熊猫期待着第一场争论 应用()