首页 > 解决方案 > 如何在不更改熊猫中其他列的情况下对一列进行排序?

问题描述

示例:当前 df 看起来像:

    df=
    A B
    1 5
    2 6
    3 8
    4 1

我希望得到的 df 是这样的(B 已排序,A 保持不变):

    df=
    A B
    1 8
    2 6
    3 5
    4 1

标签: pythonpandassortingdataframe

解决方案


你需要打破 Pandas 的内部安全机制——aligning by index它负责处理data consistency. 所以分配一维 Numpy 数组或一个普通的 Python 列表就可以了,因为它们都没有索引,所以 Pandas 不能进行对齐:

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

推荐阅读