Вам нужно сломать внутренний механизм безопасности Pandas - aligning by index
, который заботится о data consistency
.Таким образом, присвоение массива 1D Numpy или простого списка Python поможет, так как у них обоих нет индекса, поэтому Панды не могут выполнить выравнивание:
df['B'] = df['B'].sort_values(ascending=False).values
или
df['B'] = df['B'].sort_values(ascending=False).tolist()
оба дают:
In [77]: df
Out[77]:
A B
0 1 8
1 2 6
2 3 5
3 4 1