Как удалить первую строку каждой группы в пандах - PullRequest
0 голосов
/ 23 мая 2018

У меня есть такой фрейм данных:

   id  values
0   1       3
1   1       6
2   1       3
3   2       7
4   2       6
5   2       3
6   2       9

И я хочу удалить первую строку каждой группы на основе id, результат должен выглядеть следующим образом:

   id  values
1   1       6
2   1       3
4   2       6
5   2       3
6   2       9

Я попробовал сделать это: df = df.groupby('id').agg(lambda x:x[1:]), но это не работает.

Может кто-нибудь мне помочь? Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Другой подход:

df.loc[~df.index.isin(df.drop_duplicates(subset='id').index)]
0 голосов
/ 23 мая 2018

Используйте apply с iloc:

df = df.groupby('id', group_keys=False).apply(lambda x:x.iloc[1:])
#also working, not sure if generally
#df = df.groupby('id', group_keys=False).apply(lambda x:x[1:])
print (df)
   id  values
1   1       6
2   1       3
4   2       6
5   2       3
6   2       9

Или duplicated с boolean indexing:

df = df[df['id'].duplicated()]
print (df)
   id  values
1   1       6
2   1       3
4   2       6
5   2       3
6   2       9

Деталь :

print (df['id'].duplicated())
0    False
1     True
2     True
3    False
4     True
5     True
6     True
Name: id, dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...