def ranking(x):
return pd.Series(x).rank(pct=True).values[-1]
ranked = sx.expanding().apply(lambda x: ranking(x))
pd.cut(ranked, (0, 0.25, 0.75, 0.90, 1), labels=['low', 'Normal', 'High', 'Very High'])
Out[97]:
0 Very High
1 Very High
2 Very High
3 Very High
dtype: category
Categories (4, object): [low < Normal < High < Very High]
也许我不太理解这个问题,但是因为你的级数总是在增加,最后一个值的分位数总是1。所以产量应该一直“非常高”。在
这不是超高效的,因为我为每个迭代创建一个系列,但它确实起到了作用。你可以用scipy中的一些东西来改变apply函数来计算百分位,这样可以加快这个过程
这是因为
DataFrame.expanding()
没有rank()
方法。如果这是可能的话,那将是非常直截了当的。在具有scipy依赖关系的更快的解决方案:
^{pr2}$相关问题 更多 >
编程相关推荐