code: def dropDuplicates(self, subset=None):
          
          if subset is None:
              jdf = self._jdf.dropDuplicates()
          else:
              jdf = self._jdf.dropDuplicates(self._jseq(subset))
          return DataFrame(jdf, self.sql_ctx)
docs: Return a new :class:`DataFrame` with duplicate rows removed,
          optionally only considering certain columns.
  
          For a static batch :class:`DataFrame`, it just drops duplicate rows. For a streaming
          :class:`DataFrame`, it will keep all data across triggers as intermediate state to drop
          duplicates rows. You can use :func:`withWatermark` to limit how late the duplicate data can
          be and system will accordingly limit the state. In addition, too late data older than
          watermark will be dropped to avoid any possibility of duplicates.
  
          :func:`drop_duplicates` is an alias for :func:`dropDuplicates`.
  
          >>> from pyspark.sql import Row
          >>> df = sc.parallelize([ \\
          ...     Row(name='Alice', age=5, height=80), \\
          ...     Row(name='Alice', age=5, height=80), \\
          ...     Row(name='Alice', age=10, height=80)]).toDF()
          >>> df.dropDuplicates().show()
          +---+------+-----+
          |age|height| name|
          +---+------+-----+
          |  5|    80|Alice|
          | 10|    80|Alice|
          +---+------+-----+
  
          >>> df.dropDuplicates(['name', 'height']).show()
          +---+------+-----+
          |age|height| name|
          +---+------+-----+
          |  5|    80|Alice|
          +---+------+-----+