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

Python 如何在不更改pandas中其他列的情况下对一列进行排序?,python,pandas,sorting,dataframe,Python,Pandas,Sorting,Dataframe,例如: 当前df看起来像: df= A B 1 5 2 6 3 8 4 1 我希望得到的df是这样的(B被排序,A保持不变): 您需要打破一个内部安全机制-按索引对齐,该机制负责数据一致性。因此,分配1D Numpy数组或普通Python列表就可以了,因为它们都没有索引,所以熊猫无法进行对齐: df['B'] = df['B'].sort_values(ascending=False).values 或 两者都产生: In [77]: df O

例如: 当前df看起来像:

    df=
    A B
    1 5
    2 6
    3 8
    4 1
我希望得到的df是这样的(B被排序,A保持不变):


您需要打破一个内部安全机制-
按索引对齐
,该机制负责
数据一致性
。因此,分配1D Numpy数组或普通Python列表就可以了,因为它们都没有索引,所以熊猫无法进行对齐:

df['B'] = df['B'].sort_values(ascending=False).values

两者都产生:

In [77]: df
Out[77]:
   A  B
0  1  8
1  2  6
2  3  5
3  4  1

您也可以这样做:

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

签出此堆栈页面或使用NumPy:
np.sort(df['B'].values)[::-1]
+1不管怎样。@jpp,是的,这也会很好用:-D谢谢!但是举个例子。。。看起来像是
A
应该是索引,然后像往常一样按
B
排序。。。否则-将
A
保留为不按
B
排序的列是非常奇怪的。。。有点感觉这是个XY问题,但谁知道。。。这确实直接正确地回答了问题,尽管这让我觉得是“啊”:
In [77]: df
Out[77]:
   A  B
0  1  8
1  2  6
2  3  5
3  4  1
df['B'] = sorted(df['B'].tolist())[::-1]