Панды Python получают первый и последний индексы, дубликаты, если первый также последний, группы в кадре данных - PullRequest
0 голосов
/ 24 мая 2018

Я работаю над получением индекса первого и последнего появления идентификаторов в кадре данных.Но если идентификатор появляется только один раз, то последнее вхождение будет таким же, как и первое.

Например, такие данные как:

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 голосов
/ 24 мая 2018

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...