code: def apply(self, func, *args, **kwds):
          
          # estimate time to pandas apply
          wrapped = self._wrapped_apply(func, *args, **kwds)
          n_repeats = 3
          timed = timeit.timeit(wrapped, number=n_repeats)
          samp_proc_est = timed / n_repeats
          est_apply_duration = samp_proc_est / self._SAMP_SIZE * self._nrows
  
          # if pandas apply takes too long, use dask
          if est_apply_duration > self._dask_threshold:
              return self._dask_apply(func, *args, **kwds)
          else:  # use pandas
              if self._progress_bar:
                  tqdm.pandas(desc="Pandas Apply")
                  return self._obj_pd.progress_apply(func, *args, **kwds)
              else:
                  return self._obj_pd.apply(func, *args, **kwds)
docs: Apply the function to the transformed swifter object