Pandas nlargest plus总是包括" X"

时间:2018-04-27 19:19:45

标签: python pandas

我正在尝试创建一个图表,其中列出了前4个品牌,加上我代表的品牌(" X"),以及他们所有产品排名的总和。

以下是3个品牌的示例以及数据的样子(我的数据集中有300多个品牌)。

Brand | Product | Rank
  A   |    P1   |   1000
      |    P2   |   1210
      |    P3   |   2000
      |    P4   |   600
      |    P5   |   756
      |    P6   |   867
  B   |    P1   |   549
      |    P2   |   1572
      |    P3   |   3490
      |    P4   |   2341
      |    P5   |   431
      |    P6   |   321
  C   |    P1   |   421
      |    P2   |   121
      |    P3   |   805
      |    P4   |   1202
      |    P5   |   4032
      |    P6   |   432

如何根据产品的总和选择前四大品牌'排名,然后总是包括我的品牌,品牌" X"?

此外,如果我的品牌是前四大品牌,我怎样才能选择前五大品牌,以便每个图表中有5个品牌?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用pd.concat

执行此操作
n=2# input the number you need 
x='A' # input the brand you want to keep 
pd.concat([df.sum(level=0).sort_values('Rank',ascending=False).head(2),df.sum(level=0).loc[[x]]]).max(level=0)
Out[456]: 
       Rank
Brand      
B      8704
C      7013
A      6433