Python 将大于80%的值替换为中的80%

Python 将大于80%的值替换为中的80%,python,pandas,Python,Pandas,我有一个df,如下所示 df: 从上面我想用80%的值替换超过80%的值 预期产出: Id gender age salary 1 m 27 100 2 m 26 560 3 m 57 180 4 f 27 150 5 m 57 200 6 f

我有一个df,如下所示 df:

从上面我想用80%的值替换超过80%的值

预期产出:

Id     gender     age       salary
1      m          27        100
2      m          26        560
3      m          57        180
4      f          27        150
5      m          57        200
6      f          29        100
7      m          47        130
8      f          27        140
9      m          37        100
10     f          43        560
让我们试试:

quantiles = df.salary.quantile(0.8)

df.loc[df.salary > quantiles, 'salary'] = quantiles
输出(但不能将
200
作为
.8
百分位数):

如果您想填写
性别

quantiles = df.groupby('gender')['salary'].transform('quantile', q=0.8)
输出:

   Id gender  age  salary
0   1      m   27     100
1   2      m   26     200
2   3      m   57     180
3   4      f   27     150
4   5      m   57     200
5   6      f   29     100
6   7      m   47     130
7   8      f   27     140
8   9      m   37     100
9  10      f   43     890
让我们试试:

quantiles = df.salary.quantile(0.8)

df.loc[df.salary > quantiles, 'salary'] = quantiles
输出(但不能将
200
作为
.8
百分位数):

如果您想填写
性别

quantiles = df.groupby('gender')['salary'].transform('quantile', q=0.8)
输出:

   Id gender  age  salary
0   1      m   27     100
1   2      m   26     200
2   3      m   57     180
3   4      f   27     150
4   5      m   57     200
5   6      f   29     100
6   7      m   47     130
7   8      f   27     140
8   9      m   37     100
9  10      f   43     890

为什么0.8%是200?@YOBEN_的80%不是200?我不认为。8是200~为什么0.8%是200?@YOBEN_的80%不是200?我不认为。8是200~