Используйте GroupBy.ngroup
с ascending=False
:
df.groupby('column', sort=False).ngroup(ascending=False)+1
0 3
1 3
2 2
3 2
4 1
5 1
dtype: int64
Для DataFrame, который выглядит следующим образом,
df = pd.DataFrame({'column': [10, 10, 8, 8, 10, 10]})
. , .в месте, где должны быть сгруппированы только последовательные значения, вам нужно изменить ваш группировщик:
(df.groupby(df['column'].ne(df['column'].shift()).cumsum(), sort=False)
.ngroup(ascending=False)
.add(1))
0 3
1 3
2 2
3 2
4 1
5 1
dtype: int64