已排序的pandas数据框中的最后两个唯一条目

时间:2014-10-05 15:01:49

标签: python pandas

我有一个按两列(id和Name)排序的数据框:

ix   id      Value   Name

39   837     Value1  Name1
40   838     Value2  Name1
16   811     Value3  Name2
26   821     Value4  Name2
27   822     Value5  Name2
10   805     Value6  Name3
11   806     Value7  Name3

我想返回一个数据框,其中包含每个名称的最后两个唯一值,例如

ix   id      Value   Name

39   837     Value1  Name1
40   838     Value2  Name1
26   821     Value4  Name2
27   822     Value5  Name2
10   805     Value6  Name3
11   806     Value7  Name3

每个名称可能有多个“值”,而不仅仅是此示例中给出的值。 任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:0)

这应该这样做

df.groupby('Name')\                      
  .apply(lambda x: x.drop_duplicates()\  # find unique elements
                    .tail(2))\           # last two
  .reset_index(level=0, drop=True)       # remove groupby index