计算熊猫数据帧中的第一个十分位数



我是Python的新手,我有以下Pandas数据帧,其中一列表示股票名称,另一列表示股市回报,例如:

data = {'name': ["a","b","c","d","e","f","g","h"], 'value': [1,2,3,4,5,6,7,8]}
pd.DataFrame.from_dict(data)

我想做的是添加一列,如果股票名称的值属于整个样本中的第一个十分位数,那么它的值应该为1,否则为0。

我知道有函数qcut,但我不知道如何正确使用它。我尝试了以下方法,但没有得到我想要的:

q = data.apply(lambda y: pd.qcut(y, 10,labels=False, duplicates="drop"), axis=0) 

非常感谢。

您可以使用quantile来计算您的十分位数:

df['≥90%'] = df['value'].ge(df['value'].quantile(0.9)).astype(int)

注意。如果您想要最低十分位数:df['value'].le(df['value'].quantile(0.1)).astype(int)

输出:

name  value  ≥90%
0    a      1     0
1    b      2     0
2    c      3     0
3    d      4     0
4    e      5     0
5    f      6     0
6    g      7     0
7    h      8     1

最新更新