五分位数误差

时间:2018-06-25 20:00:11

标签: python pandas

这是我的数据框:

      Date       AAPL      NFLX       INTC    AAPL_Ret   NFLX_Ret   INTC_Ret
0 2008-01-31  27.834286  3.764286  25.350000       
1 2008-02-29  27.847143  3.724286  24.670000   -0.07     0.25       -0.05     
2 2008-03-31  25.721428  3.515714  22.670000    0.15     0.10       0.06  
3 2008-04-30  25.377142  3.554286  22.879999    etc
4 2008-05-31  24.464285  3.328571  22.260000

我正在尝试将每只股票(最后3列)的收益组织成五分位数。我想缩放此比例(最终最终有很多股票,而不只是3个),所以我尝试了将qcut仅应用于df中包含_Ret的列的代码:

df ['Quintile'] = pd.qcut(df [[如果在col中为“ _Ret”,则在df.col中为col的col]],5,labels = np.arange(5,0,-1))< / p>

我得到的错误是“输入数组必须是一维的”

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题在于,pd.qcut函数接受一维数组,并且您正在传递数据帧。相反,您可以执行以下操作:

for col in df.columns:
    if '_Ret' in col:
        df[col+'_quantile'] = pd.qcut(df[col], 5, labels=list(range(5,0,-1)))