#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
>>>