首页 > 解决方案 > 一个 Pandas Dataframe 上的多种排序

问题描述

假设我有一个 Pandas 数据框:

Col_A   Col_B   Col_C
  501     A       2
  501     G       19
  501     B       10
  501     Z       32
  502     B        7
  502     J       34
  502     M        8
  502     S       90

我正在寻找一种将多种排序应用于一个数据框的方法。例如,在 Col_A = 501 的情况下,Col_B 和 Col_C 将是升序的。在 Col_A = 502 的情况下,Col_B 和 Col_C 会这样下降:

Col_A   Col_B   Col_C
 501     A       2
 501     B       10
 501     G       19
 501     Z       32
 502     S       90
 502     M       34
 502     J       8
 502     B       7

任何帮助将非常感激!

标签: pythonpandasdataframe

解决方案


像这样的东西会起作用:

In [2132]: d1 = df[df['Col_A'].eq(501)].sort_values(by=['Col_B', 'Col_C'])

In [2133]: d2 = df[df['Col_A']eq(502)].sort_values(by=['Col_B', 'Col_C'], ascending=False)

In [2137]: df = d1.append(d2)

In [2138]: df
Out[2138]: 
   Col_A Col_B  Col_C
0    501     A      2
2    501     B     10
1    501     G     19
3    501     Z     32
7    502     S     90
6    502     M      8
5    502     J     34
4    502     B      7

推荐阅读