отбрасывает строки в pandas dataframe, если 'id' встречается менее 2 раз - PullRequest
1 голос
/ 26 марта 2020

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

мой фрейм данных выглядит следующим образом:

df.head()
>>
index   id  tweet_len

161660  4001    5
116708  8571    5
213433  1813    5
213449  1813    5
213450  1813    5
213455  1813    5
29295   8190    5
213457  1813    5
29293   8190    5
213461  1531    5

Я хочу удалить все строки, если id появился ровно один раз.

df.groupby('id').agg('count')['tweet_len']<2

дает мне

id
2        False
3        False
4        False
6        False
7        False
         ...  
9996     False
9997     False
9998     False
9999     False
10000    False
Name: tweet_len, Length: 9252, dtype: bool

, но мне нужны индексы, чтобы я мог отбрасывать строки из этих индексов. Как я могу?

Ответы [ 2 ]

2 голосов
/ 26 марта 2020

Вы можете transform и агрегировать с size и использовать результат для индексации кадра данных:

df[df.groupby('id').index.transform('size').gt(1)]

   index    id   tweet_len
2  213433  1813          5
3  213449  1813          5
4  213450  1813          5
5  213455  1813          5
6   29295  8190          5
7  213457  1813          5
8   29293  8190          5
1 голос
/ 26 марта 2020

Вы можете просто использовать duplicate:

df[df.duplicated('id',keep=False)]

Выход:

    index    id  tweet_len
2  213433  1813          5
3  213449  1813          5
4  213450  1813          5
5  213455  1813          5
6   29295  8190          5
7  213457  1813          5
8   29293  8190          5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...