code: def drop_duplicates(self, subset=None, keep='first', inplace=False):
          
          if self.empty:
              return self.copy()
  
          inplace = validate_bool_kwarg(inplace, 'inplace')
          duplicated = self.duplicated(subset, keep=keep)
  
          if inplace:
              inds, = (-duplicated)._ndarray_values.nonzero()
              new_data = self._data.take(inds)
              self._update_inplace(new_data)
          else:
              return self[-duplicated]
docs: Return DataFrame with duplicate rows removed, optionally only
          considering certain columns. Indexes, including time indexes
          are ignored.
  
          Parameters
          ----------
          subset : column label or sequence of labels, optional
              Only consider certain columns for identifying duplicates, by
              default use all of the columns
          keep : {'first', 'last', False}, default 'first'
              - ``first`` : Drop duplicates except for the first occurrence.
              - ``last`` : Drop duplicates except for the last occurrence.
              - False : Drop all duplicates.
          inplace : boolean, default False
              Whether to drop duplicates in place or to return a copy
  
          Returns
          -------
          DataFrame