如何在不更改pandas中的其他列的情况下对一列进行排序?

时间:2018-06-12 15:39:59

标签: python pandas sorting dataframe

实施例: 目前的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

2 个答案:

答案 0 :(得分:8)

您需要打破内部Pandas安全机制 - aligning by index,它负责data consistency。因此,分配1D Numpy数组或vanilla 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

答案 1 :(得分:0)

您也可以这样做:

df['B'] = sorted(df['B'].tolist())[::-1]