双重求和并按第一个属性排名

时间:2018-03-26 11:24:58

标签: python python-2.7 pandas grouping pandas-groupby

我使用以下代码完成了基于“CPTY”和“货币”组的双重求和:

brkrcy=data.groupby(['CPTY','currency'], as_index=False).agg({"Gross Loan Amount": "sum"})

导致以下输出:

      CPTY currency  Gross Loan Amount
0     BARC      EUR       2.683000e+09
1     BARC      GBP       6.091100e+09
2     BARC      SEK       2.174349e+08
3     BARC      USD       5.993229e+09
4     BARC      ZAR       1.126837e+08
5     BMON      GBP       7.846989e+06
6     BMON      USD       7.758432e+08
7      BNP      EUR       3.204291e+09
8      BNP      GBP       2.953117e+09
9      BNP      JPY       2.642923e+08
10     BNP      USD       3.511912e+09
11   CALIP      EUR       5.598966e+06
12   CALIP      GBP       3.319806e+09
13   CALIP      USD       8.736326e+08
14   CANTR      USD       3.142870e+08
15    CIBC      CAD       5.545886e+08
16    CIBC      GBP       1.099860e+09
17    CITI      CZK       2.941352e+07

我希望根据“CPTY”的“总贷款额”和“货币”的总和对表“brkrcy”进行排名。注意我有一个旧版本的熊猫所以“sort_values”不起作用我。我试过了

brkrcy.sort(['Gross Loan Amount'], ascending=[False])  

但它仅根据“总贷款额”排名。期望的输出应首先以“CPTY”的最高总“贷款金额”值开始,然后按降序排列“货币”。这就像是从“CPTY”开始,然后是“货币”的双重排名

1 个答案:

答案 0 :(得分:0)

这是另一个让自己清楚的例子

df = pd.DataFrame({'a': ['A', 'A','A', 'B', 'B','B'], 'b': ['A1', 'A2','A3' ,'B1', 'B2','B3'], 'c': ['2','3','4','5','6','1'] })

>>> df
   a   b  c
0  A  A1  2
1  A  A2  3
2  A  A3  4
3  B  B1  5
4  B  B2  6
5  B  B3  1

期望的输出

>>> df
       a   b  c
    4  B  B2  6
    3  B  B1  5
    5  B  B3  1       
    2  A  A3  4
    1  A  A2  3
    0  A  A1  2 

如您所见,它是基于列a然后列b​​的双重排名。我们首先从最高的B开始,在B中我们也从最高的开始,即B2