code: def dropna(self, axis=0, how="any", thresh=None, subset=None, inplace=False):
          
          inplace = validate_bool_kwarg(inplace, "inplace")
  
          if is_list_like(axis):
              axis = [self._get_axis_number(ax) for ax in axis]
              result = self
  
              for ax in axis:
                  result = result.dropna(axis=ax, how=how, thresh=thresh, subset=subset)
              return self._create_or_update_from_compiler(result._query_compiler, inplace)
  
          axis = self._get_axis_number(axis)
          if how is not None and how not in ["any", "all"]:
              raise ValueError("invalid how option: %s" % how)
          if how is None and thresh is None:
              raise TypeError("must specify how or thresh")
          if subset is not None:
              if axis == 1:
                  indices = self.index.get_indexer_for(subset)
                  check = indices == -1
                  if check.any():
                      raise KeyError(list(np.compress(check, subset)))
              else:
                  indices = self.columns.get_indexer_for(subset)
                  check = indices == -1
                  if check.any():
                      raise KeyError(list(np.compress(check, subset)))
          new_query_compiler = self._query_compiler.dropna(
              axis=axis, how=how, thresh=thresh, subset=subset
          )
          return self._create_or_update_from_compiler(new_query_compiler, inplace)
docs: Create a new DataFrame from the removed NA values from this one.
  
          Args:
              axis (int, tuple, or list): The axis to apply the drop.
              how (str): How to drop the NA values.
                  'all': drop the label if all values are NA.
                  'any': drop the label if any values are NA.
              thresh (int): The minimum number of NAs to require.
              subset ([label]): Labels to consider from other axis.
              inplace (bool): Change this DataFrame or return a new DataFrame.
                  True: Modify the data for this DataFrame, return None.
                  False: Create a new DataFrame and return it.
  
          Returns:
              If inplace is set to True, returns None, otherwise returns a new
              DataFrame with the dropna applied.