【发布时间】:2021-04-29 16:40:38
【问题描述】:
我想找到每列的百分位数并添加到 df 数据框和标签
如果列的值为
前 20%(值>第 80 个百分位)然后是“强”
低于 20%(值>第 80 个百分位)然后“弱”
其他平均值
下面是我的数据框
df=pd.DataFrame({'month':['1','1','1','1','1','2','2','2','2','2','2','2'],'X1':
[30,42,25,32,12,10,4,6,5,10,24,21],'X2':[10,76,100,23,65,94,67,24,67,54,87,81],'X3':
[23,78,95,52,60,76,68,92,34,76,34,12]})
df
低于我的尝试
df['X1_percentile'] = df.X1.rank(pct = True)
df['X1_segment'] = np.where(df['X1_percentile']>0.8, 'Strong',np.where(df['X1_percentile']
<0.20,'Weak', 'Average'))
但我想为每个月和每列执行此操作。如果可能的话,这可以通过任何列号的函数自动执行,并且还为每列键入 colname+"_per" 和 colname+"_segment" ? 谢谢
【问题讨论】:
标签: pandas percentile