我的数据框如下
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
知道为什么会这样吗? 即使索引号是正确的。只有一列的值似乎是错误的!!
答案 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