我有一个包含字母,数字和数字列的数据框
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
答案 0 :(得分:1)
我们可以将sort_values
与na_position
参数一起使用,然后调用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