【问题标题】:How can I sort one column without changing other columns in pandas?如何在不更改熊猫中其他列的情况下对一列进行排序?
【发布时间】: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


【解决方案1】:

你也可以这样做:

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

【讨论】:

    【解决方案2】:

    您需要破坏 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
    

    【讨论】:

    • 或者使用 NumPy:np.sort(df['B'].values)[::-1]。无论如何 +1。
    • @jpp,是的,这也会很好用 :-D 谢谢!
    • 尽管给出了这个例子......看起来A 应该是索引,然后像往常一样按B 排序......否则 - 将A 保留为未按B 排序的列...稍微感觉这是一个 XY 问题,但谁知道...这确实直接正确地回答了 Q,尽管它让我觉得它是“呃”:)
    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多