熊猫groupby head()和tail()未获取正确的值

时间:2019-08-24 12:41:57

标签: pandas group-by

我的数据框如下

     id     s   e   sa  ea
0   AAA     2015-04-22  2015-11-11  2015-05-07  2018-09-28
1   AAA     2015-05-07  2018-09-28  2015-05-07  2018-09-28
2   BBB     1972-11-04  2019-08-01  2019-06-15  2019-12-31
3   BBB     2019-06-15  2019-12-31  2019-06-15  2019-12-31
4   CCC     2000-11-04  2005-11-04  2000-11-04  2019-01-01
5   CCC     2006-11-04  2019-01-01  2000-11-04  2019-01-01

当我执行groupby并选择head(1)tail(1)时,我得到了错误的值

df1.groupby('id').head(1)

给我

    id  s   e   sa  ea
0   AAA     2015-05-07  2015-11-11  2015-05-07  2018-09-28
2   BBB     2019-06-15  2019-08-01  2019-06-15  2019-12-31
4   CCC     2000-11-04  2005-11-04  2000-11-04  2019-01-01

df1.groupby('id').tail(1)给了我

     id     s   e   sa  ea
1   AAA     2015-05-07  2018-09-28  2015-05-07  2018-09-28
3   BBB     2019-06-15  2019-12-31  2019-06-15  2019-12-31
5   CCC     2000-11-04  2019-01-01  2000-11-04  2019-01-01

知道为什么会这样吗? 即使索引号是正确的。只有一列的值似乎是错误的!!

放置图片以显示错误 enter image description here

1 个答案:

答案 0 :(得分:1)

如果我理解正确,则应该使用first()last()而不是head()tail()

>>> df1.groupby('id').first()
              s           e          sa          ea
id
AAA  2015-04-22  2015-11-11  2015-05-07  2018-09-28
BBB  1972-11-04  2019-08-01  2019-06-15  2019-12-31
CCC  2000-11-04  2005-11-04  2000-11-04  2019-01-01


>>> df1.groupby('id').last()
              s           e          sa          ea
id
AAA  2015-05-07  2018-09-28  2015-05-07  2018-09-28
BBB  2019-06-15  2019-12-31  2019-06-15  2019-12-31
CCC  2006-11-04  2019-01-01  2000-11-04  2019-01-01