如何基于各种过滤器过滤出重复项

时间:2019-04-15 19:43:23

标签: python python-3.x pandas dataframe

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

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 个答案:

答案 0 :(得分:1)

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