我有一个包含字母,数字和数字列的数据框

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

最佳答案

我们可以将sort_valuesna_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

关于python - 如何基于各种过滤器过滤出重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55696241/

10-13 02:15