#pandas #dataframe #merge #aggregate #data-science
#питон #панды
Вопрос:
Как я могу получить строки по различным значениям в COL2
?
Например, у меня есть фрейм данных ниже:
COL1 COL2
a.com 22
b.com 45
c.com 34
e.com 45
f.com 56
g.com 22
h.com 45
Я хочу получить строки, основанные на уникальных значениях в COL2
:
COL1 COL2
a.com 22
b.com 45
c.com 34
f.com 56
Итак, как я могу это получить? Я был бы очень признателен, если бы кто-нибудь мог оказать какую-либо помощь.
Ответ №1:
Используйте drop_duplicates
с указанием столбца COL2
для проверки дубликатов:
df = df.drop_duplicates('COL2')
#same as
#df = df.drop_duplicates('COL2', keep='first')
print (df)
COL1 COL2
0 a.com 22
1 b.com 45
2 c.com 34
4 f.com 56
Вы также можете сохранить только последние значения:
df = df.drop_duplicates('COL2', keep='last')
print (df)
COL1 COL2
2 c.com 34
4 f.com 56
5 g.com 22
6 h.com 45
Или удалите все дубликаты:
df = df.drop_duplicates('COL2', keep=False)
print (df)
COL1 COL2
2 c.com 34
4 f.com 56
Комментарии:
1. извинения! Я отсутствовал 2 дня
2. Столкнулся с той же проблемой, решение хорошо ухудшилось, но мне нужно было сначала отсортировать данные по соответствующему столбцу, прежде чем удалять дубликаты
3. Я должен был сделать
df = df.drop_duplicates(['COL2'])
. Обратите внимание, что'COL2'
внутри[]
Ответ №2:
Вы можете использовать groupby
в сочетании с first
last
методами и . Чтобы получить первую строку из каждой группы:
df.groupby('COL2', as_index=False).first()
Вывод:
COL2 COL1
0 22 a.com
1 34 c.com
2 45 b.com
3 56 f.com
Чтобы получить последнюю строку из каждой группы:
df.groupby('COL2', as_index=False).last()
Вывод:
COL2 COL1
0 22 g.com
1 34 c.com
2 45 h.com
3 56 f.com