Как мне удалить строки, которые дублируются в указанных столбцах?

#python

Вопрос:

Я новичок в python.

Мой код:

 import numpy as np
import pandas as pd
df = pd.DataFrame({'A':[2,3,2,2,2], 
 
                   'B':[1,5,5,1,1],
 
                    'C':[1,6,6,2,1],
                   'D':[1,2,3,1,1]})
df
 

фрейм данных:

     A   B   C   D
0   2   1   1   1
1   3   5   6   2
2   2   5   6   3
3   2   1   2   1
4   2   1   1   1
 

Я хочу удалить строку и оставить первую строку, если столбец B и столбец C совпадают.

Нравится,

для row0 и row4 столбцы B и ColumnC одинаковы, удалите row4;

для row1 и row2 столбцы B и ColumnC одинаковы, удалите row2;

Ответ №1:

Используйте drop_duplicates для столбцов ‘B’ и ‘C’ ( subset=['B', 'C'] ) и keep first ( keep='first' )

 >>> df.drop_duplicates(subset=['B', 'C'], keep='first')
   A  B  C  D
0  2  1  1  1
1  3  5  6  2
3  2  1  2  1
 

keep='first' это параметр по умолчанию, поэтому его не нужно устанавливать.

Ответ №2:

Вы можете сделать что-то вроде:

 df.groupby(['B', 'C']).head(1)
 

Для этого используется первый элемент из каждой группы:

    A  B  C  D
0  2  1  1  1
1  3  5  6  2
3  2  1  2  1
 

Ответ №3:

Или:

 >>> df[~df[['B', 'C']].duplicated()]
   A  B  C  D
0  2  1  1  1
1  3  5  6  2
3  2  1  2  1
>>>