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

问题描述 投票:2回答:1

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

提前致谢

python pandas dataframe
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.