这是我的数据框:
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>
我得到的错误是“输入数组必须是一维的”
感谢您的帮助!
答案 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)))