Python 如何在不更改pandas中其他列的情况下对一列进行排序?
例如: 当前df看起来像: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=
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]