#python #python-3.x #pandas #dataframe
#python #python-3.x #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных со столбцами букв, цифр и цифр
df = pd.DataFrame({'Letters':['AB', 'XY', 'ZW','ZW','XY' ],
'Numbers': [1234, 4, 333, 333, 4],
'Digits': [32234, 32534, 4234, 4235, NaN]})
print(df)
Letters Numbers Digits
0 AB 1234 32234
1 XY 4 32534
2 ZW 333 4234
3 ZW 333 4235
4 XY 4 NaN
Я хотел бы отфильтровать дубликаты на основе определенных столбцов (здесь буквы и цифры) и удалить строки, в которых столбец имеет определенное значение (в данном случае, где «Цифры» являются наибольшими или Nan)
Таким образом, результат будет
print(df)
Letters Numbers Digits
0 AB 1234 32234
1 XY 4 32534
3 ZW 333 4235
Ответ №1:
Мы можем использовать sort_values
na_position
аргумент with , а затем вызвать drop_duplicates
:
(df.sort_values('Digits', na_position='first')
.drop_duplicates(['Letters', 'Numbers'], keep='last')
.sort_index())
Letters Numbers Digits
0 AB 1234 32234.0
1 XY 4 32534.0
3 ZW 333 4235.0