title: python drop duplicates by certain order (not `first`, `last`)
body: <pre><code>ID  values
  111 reason1
  111 reason2
  111 reason3
  222 reason2
  222 reason4
  222 reason5
  
  df.drop_duplicates(["ID"], keep='???', inplace=True)
  </code></pre>
  
  <p>The way I know is using the drop_duplicates, but it only gives me the option <code>first</code>, <code>last</code>. I want to check that if there is reason2, then keep the record with reason2, else check reason3, etc. Basically, there is particular order, such as reason2, reason3, reason4, etc.</p>