【发布时间】:2018-11-22 01:52:29
【问题描述】:
示例: 当前的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
【问题讨论】:
标签: 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
【问题讨论】:
标签: python pandas sorting dataframe
你也可以这样做:
df['B'] = sorted(df['B'].tolist())[::-1]
【讨论】:
您需要破坏 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
【讨论】:
np.sort(df['B'].values)[::-1]。无论如何 +1。
A 应该是索引,然后像往常一样按B 排序......否则 - 将A 保留为未按B 排序的列...稍微感觉这是一个 XY 问题,但谁知道...这确实直接正确地回答了 Q,尽管它让我觉得它是“呃”:)