pandas groupby忽略了一些行

时间:2018-03-03 15:30:27

标签: python pandas

我有这样的DataFrame

            W2     N      V1     V2

            ba     EX     62069  30014
            ba     ADV    12325  8218 
            ba     X      23     22 
            b      X      164831 39425 
            b      PRT    41543  16708

我需要在W2中使用相同的值来汇总V1,V2值。这一行应该是V1 == max。 我这样做:

   df_4=df_2.sort_values(['W2','V1'],ascending=[True, False]).drop_duplicates(['W2'])
   df_3= df_2.groupby(['W2'],as_index=False).sum()

但是当我搜索max时我需要忽略行,其中N == EX(只有max,sum应该包括这行的V1和V2)。 所以结果应该是:

        W2     N      V1     V2

        ba     ADV    74417  38254
        b      X      206374 56133

我希望我能用熊猫做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为需要先按queryboolean indexing过滤掉行,然后仅为set_index添加mapreindex列,最后添加{{3如果需要按N更改最终订单:

df_2
s = (df_2.query('N != "EX"')
         .sort_values(['W2','V1'],ascending=[True, False])
         .drop_duplicates(['W2'])
         .set_index('W2')['N'])