如何使用Python、Pandas创建一个十分位和五分位列,以便根据大小对另一个变量进行排序?

我有一个数据框,其中有一列包含投资,表示交易员的投资金额。我想在数据框中创建2个新列;一个给出十分位等级,另一个根据投资规模给出五分位等级。我想要1代表最大投资的十分位数,10代表最小投资的十分位数。笑眯眯的,我想要1代表投资最大的五分之一,5代表最小的五分之一

我刚接触熊猫,有没有一种方法可以让我轻松做到这一点?
谢谢

您正在寻找的功能位于pandas.qcuthttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.qcut.html

[51]on

:将numpy作为np导入
At[52]on:导入熊猫作为pd
At[53]on:investment_df=pd.DataFrame(np.arange(10),columns=['investment'])
At[54]on:投资_df['decile']=pd.qcut(投资_df['investment'],10,labels=False)
At[55]on:investment_df['quintile']=pd.qcut(investment_df['investment'],5,labels=False)
At[56]on:投资
Output[56]:
投资十分五分位数
0           0       0         0
1           1       1         0
2           2       2         1
3           3       3         1
4           4       4         2
5           5       5         2
6           6       6         3
7           7       7         3
8           8       8         4
9           9       9         4   

用最小的数字标注最大的百分位数是不标准的,但你可以通过

[60]on

:投资_df['quintile']=pd.qcut(投资_df['investment'],5,标签=np.arange(5,0,-1))
At[61]on:investment_df['decile']=pd.qcut(investment_df['investment'],10,labels=np.arange(10,0,-1))
At[62]on:投资
Output[62]:
投资十分五分位数
0           0     10        5
1           1      9        5
2           2      8        4
3           3      7        4
4           4      6        3
5           5      5        3
6           6      4        2
7           7      3        2
8           8      2        1
9           9      1        1

发表评论