首页 > 解决方案 > Python pandas获取数据框中组的第一个和最后一个索引,如果第一个也是最后一个则重复

问题描述

我正在努力获取数据框中第一次和最后一次出现的 ID 的索引。但如果 ID 只出现一次,那么最后一次出现与第一次出现相同。

例如,这样的数据:

ID  Date
A   1/1/2015
A   1/5/2016
A   1/3/2017
B   1/3/2017
C   1/5/2016
C   1/7/2016

输出将是

ID  Index   Date
A   0   1/1/2015
A   2   1/3/2017
B   3   1/3/2017
B   3   1/3/2017
C   4   1/5/2016
C   5   1/5/2016

注意:我真的不需要索引,它只是为了让问题更清楚。

我尝试过使用data.groupby('ID', as_index=False).nth([0,-1]),但在上面的示例中,这只会输出 B 一次。

提前致谢

标签: pythonpandasdataframe

解决方案


pd.concat

pd.concat([d.iloc[[0, -1]] for _, d in df.groupby('ID')])

  ID      Date
0  A  1/1/2015
2  A  1/3/2017
3  B  1/3/2017
3  B  1/3/2017
4  C  1/5/2016
5  C  1/7/2016

使用agg

df.groupby('ID').agg(['first', 'last']).stack().reset_index('ID')

      ID      Date
first  A  1/1/2015
last   A  1/3/2017
first  B  1/3/2017
last   B  1/3/2017
first  C  1/5/2016
last   C  1/7/2016

推荐阅读