【问题标题】:Quintiles error五分位数错误
【发布时间】:2018-06-26 04:23:36
【问题描述】:

这是我的数据框:

      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 for col in df.columns if "_Ret" in col]], 5, labels=np.arange(5, 0, -1))

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

感谢您的帮助!

【问题讨论】:

    标签: python pandas


    【解决方案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)))
    

    【讨论】:

    • 效果很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多