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