Python pandas获取第一个和最后一个索引,如果第一个也是数据框中的组的最后一个,则重复

时间:2018-05-24 03:25:35

标签: python pandas dataframe

我正在努力获取数据框中第一个和最后一个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一次。

提前致谢

1 个答案:

答案 0 :(得分:2)

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