【问题标题】:Sort 2 columns in pandas keeping 1 additional column fixed对 pandas 中的 2 列进行排序,保持另外 1 列固定
【发布时间】:2020-07-16 15:09:04
【问题描述】:

我有一个看起来像这样的熊猫数据框:

X    Y        Z
AB  bat     0.51184607
AB  ball    0.45687276
AB  cat     0.5428388
CD  apple   0.89665717
CD  tiger   0.6785901
CD  bench   0.787102
CD  dragon  0.8066087

我想根据 Z 列的值以降序对数据框进行排序,并相应地获取相应的 Y 列值,但保持 X 列不变。所以输出应该是这样的:

X    Y         Z
AB  cat     0.5428388
AB  bat     0.51184607
AB  ball    0.45687276
CD  apple   0.89665717
CD  dragon  0.8066087
CD  bench   0.787102
CD  tiger   0.6785901

如何在 pandas 中有效地做到这一点

【问题讨论】:

  • df.sort_values(['X','Z'], ascending=[True,False])?
  • 对于 X 必须保持固定但没有字母数字顺序的情况,必须首先将其转换为 dtype category,如 this answer 所示。

标签: python python-3.x pandas dataframe sorting


【解决方案1】:

你可以sort_values

df = df.sort_values(['X','Z'],ascending=[True,False])
Out[74]: 
    X       Y         Z
2  AB     cat  0.542839
0  AB     bat  0.511846
1  AB    ball  0.456873
3  CD   apple  0.896657
6  CD  dragon  0.806609
5  CD   bench  0.787102
4  CD   tiger  0.678590

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2020-09-02
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多