我有700多种股票的清单:
excesslist.nlargest(5)
OLED 4.551521
NBIX 4.538618
ALNY 4.526540
AMD 4.502308
IONS 4.484968
...
我想给每个股票一个值(1/100百分位数)。例如,前1%获得0.99分,前2%获得0.98分...最低1%获得.01。
无法使用np.percentile来增加ea值,只是不得不手动执行,并且不确定如何分配值:
In: np.percentile(excesslist,[0,1,2,3])
Out: array([ 0.72803527, 0.78873332, 0.83364907, 0.85492285])
预期输出为列表的e / 1/100百分位数分配一个公共值
答案 0 :(得分:3)
初始化数据框,然后使用df.qcut
:
df = pd.DataFrame({'Stocks' : excesslist})
df['Percentile'] = pd.qcut(df.Stocks, 100, labels=False) / 100
答案 1 :(得分:3)
使用pct=True
或pd.Series.rank
方法中的pd.DataFrame.rank
参数。
excesslist.rank(pct=True)